JDK memberikan beberapa dukungan untuk permintaan protokol stateless (http) di bawah ini saya akan menjelaskan contoh kecil (komponen) yang saya tulis:
Pertama mari kita bangun kelas permintaan (httprequester).
Kelas ini merangkum kode untuk Java untuk menerapkan permintaan sederhana, sebagai berikut:
Salinan kode adalah sebagai berikut:
impor java.io.bufferedReader;
impor java.io.ioException;
impor java.io.inputstream;
impor java.io.inputStreamReader;
impor java.net.httpurlconnection;
impor java.net.url;
impor java.nio.charset.charset;
impor java.util.map;
impor java.util.vector;
/**
* Objek Permintaan HTTP
*
* @author yymmiinngg
*/
kelas publik httprequester {
Private String DefaultContentencoding;
httprequester publik () {
this.defaultContentEncoding = charset.defaultCharset (). name ();
}
/**
* Kirim Permintaan Dapatkan
*
* @param urlstring
* Alamat URL
* Objek respons @return
* @Throws IoException
*/
public httprespons sendget (string urlstring) melempar ioException {
kembalikan ini.
}
/**
* Kirim Permintaan Dapatkan
*
* @param urlstring
* Alamat URL
* @param params
* Set parameter
* Objek respons @return
* @Throws IoException
*/
httprespons publik sendGet (string urlstring, peta <string, string> params)
melempar ioException {
kembalikan this.send (urlstring, "get", params, null);
}
/**
* Kirim Permintaan Dapatkan
*
* @param urlstring
* Alamat URL
* @param params
* Set parameter
* Properti @param
* Minta atribut
* Objek respons @return
* @Throws IoException
*/
httprespons publik sendGet (string urlstring, peta <string, string> params,
Peta <String, String> Properties) melempar ioException {
kembalikan this.send (urlstring, "get", params, properties);
}
/**
* Kirim permintaan pos
*
* @param urlstring
* Alamat URL
* Objek respons @return
* @Throws IoException
*/
public httprespons sendPost (string urlstring) melempar ioException {
kembalikan this.send (urlstring, "post", null, null);
}
/**
* Kirim permintaan pos
*
* @param urlstring
* Alamat URL
* @param params
* Set parameter
* Objek respons @return
* @Throws IoException
*/
httprespons publik sendPost (string urlstring, peta <string, string> params)
melempar ioException {
kembalikan this.send (urlstring, "post", params, null);
}
/**
* Kirim permintaan pos
*
* @param urlstring
* Alamat URL
* @param params
* Set parameter
* Properti @param
* Minta atribut
* Objek respons @return
* @Throws IoException
*/
httprespons publik sendPost (string urlstring, peta <string, string> params,
Peta <String, String> Properties) melempar ioException {
kembalikan this.send (urlstring, "post", params, properties);
}
/**
* Kirim permintaan http
*
* @param urlstring
* Objek refleksi @return
* @Throws IoException
*/
Private HTTPRESPONS Kirim (string urlstring, metode string,
Peta <String, String> Parameter, Peta <String, String> Properties)
melempar ioException {
HttpurlConnection urlconnection = null;
if (method.equalSignorecase ("get") && parameter! = null) {
StringBuffer param = stringBuffer baru ();
int i = 0;
untuk (tombol string: parameter.keyset ()) {
if (i == 0)
param.append ("?");
kalau tidak
param.append ("&");
param.append (key) .Append ("="). Append (parameter.get (key));
i ++;
}
urlstring += param;
}
Url url = url baru (urlstring);
urlConnection = (httpurlconnection) url.openconnection ();
urlconnection.setRequestMethod (metode);
urlconnection.setDoOutput (true);
urlconnection.setDoInput (true);
urlconnection.setusecaches (false);
if (properties! = null)
untuk (tombol string: properties.keyset ()) {
urlconnection.addRequestProperty (key, properties.get (key));
}
if (method.equalSignorecase ("post") && parameter! = null) {
StringBuffer param = stringBuffer baru ();
untuk (tombol string: parameter.keyset ()) {
param.append ("&");
param.append (key) .Append ("="). Append (parameter.get (key));
}
urlconnection.getoutputStream (). write (param.toString (). getBytes ());
urlconnection.getoutputStream (). flush ();
urlconnection.getoutputStream (). tutup ();
}
kembalikan this.makeContent (urlstring, urlconnection);
}
/**
* Dapatkan objek respons
*
* @param urlconnection
* Objek respons @return
* @Throws IoException
*/
Private HTTPRESPON MakeContent (String UrlString,
HttpurlConnection urlconnection) melempar ioException {
Httprespons httpresponser = httprespons baru ();
mencoba {
InputStream in = urlConnection.getInputStream ();
BufferedReader bufferedReader = BufferedReader baru (
InputStreamReader baru (IN));
httpresponser.contentCollection = vektor baru <string> ();
StringBuffer Temp = New StringBuffer ();
String line = bufferedReader.readline ();
while (line! = null) {
httpresponser.contentcollection.add (line);
temp.Append (line) .Append ("/r/n");
line = bufferedreader.readline ();
}
bufferedreader.close ();
String ecod = urlConnection.getContentEncoding ();
if (ecod == null)
ecod = this.defaultContentencoding;
httpresponser.urlString = urlstring;
httpresponser.defaultport = urlconnection.getUrl (). getDefaultport ();
httpresponser.file = urlConnection.getUrl (). getFile ();
httpresponser.host = urlConnection.getUrl (). getHost ();
httpresponser.path = urlConnection.getUrl (). getPath ();
httpresponser.port = urlConnection.getUrl (). getport ();
httpresponser.protocol = urlconnection.getUrl (). getProtocol ();
httpresponser.query = urlconnection.getUrl (). getQuery ();
httpresponser.ref = urlconnection.getUrl (). getRef ();
httpresponser.userInfo = urlconnection.getUrl (). getUserInfo ();
httpresponser.content = string baru (temp.toString (). getBytes (), ecod);
httpresponser.contentencoding = ecod;
httpresponser.code = urlConnection.getResponsecode ();
httpresponser.message = urlConnection.getResponseMessage ();
httpresponser.contentType = urlConnection.getContentType ();
httpresponser.method = urlConnection.getRequestMethod ();
httpresponser.connecttimeout = urlConnection.getConnecttimeout ();
httpresponser.readtimeout = urlconnection.getreadtimeout ();
return httpresponser;
} catch (ioException e) {
lempar e;
} Akhirnya {
if (urlconnection! = null)
urlconnection.disconnect ();
}
}
/**
* Set Karakter Respons Default
*/
string publik getDefaultContentEncoding () {
kembalikan this.defaultContentencoding;
}
/**
* Atur set karakter respons default
*/
public void setDefaultContentEncoding (String DefaultContentEncoding) {
this.defaultContentEncoding = defaultContentEncoding;
}
}
Kedua, mari kita lihat objek respons (httprespons). Objek respons sebenarnya hanya kacang data, yang merangkum data hasil dari respons permintaan, sebagai berikut:
Salinan kode adalah sebagai berikut:
impor java.util.vector;
/**
* Objek respons
*/
kelas publik httprespons {
String urlstring;
Int Defaultport;
File string;
Host string;
Jalur string;
int port;
Protokol string;
Kueri string;
String ref;
String userInfo;
String ContentEncoding;
Konten string;
String ContentType;
kode int;
Pesan string;
Metode string;
int connecttimeout;
int readtimeout;
Vektor <string> ContentCollection;
Public String getContent () {
mengembalikan konten;
}
string publik getContentType () {
mengembalikan ContentType;
}
public int getCode () {
Kode pengembalian;
}
Public String getMessage () {
kembali pesan;
}
Vektor publik <string> getContentCollection () {
mengembalikan ContentCollection;
}
string publik getContentEncoding () {
mengembalikan ContentEncoding;
}
Public String getMethod () {
metode pengembalian;
}
publik int getConnecttimeout () {
kembali ConnectTimeout;
}
public int getReadTimeOut () {
kembali readtimeout;
}
Public String getUrlString () {
mengembalikan urlstring;
}
publik int getDefaultport () {
mengembalikan defaultport;
}
Public String getFile () {
pengembalian file;
}
gethost string publik () {
Return Host;
}
getPath string publik () {
Jalur pengembalian;
}
publik int getport () {
port kembali;
}
Public String getProtocol () {
protokol pengembalian;
}
getQuery string publik () {
kueri kembali;
}
string publik getRef () {
REXT REF;
}
string publik getUserInfo () {
mengembalikan userInfo;
}
}
Akhirnya, mari kita tulis kelas aplikasi untuk menguji apakah kode di atas benar
Salinan kode adalah sebagai berikut:
impor com.yao.http.httprequester;
impor com.yao.http.httprespons;
tes kelas publik {
public static void main (string [] args) {
mencoba {
Permintaan httprequester = httprequester baru ();
Httprespons hr = request.sendget ("// www.vevb.com");
System.out.println (hr.getUrlString ());
System.out.println (hr.getProtocol ());
System.out.println (hr.gethost ());
System.out.println (hr.getport ());
System.out.println (hr.getContentEncoding ());
System.out.println (hr.getMethod ());
System.out.println (hr.getContent ());
} catch (Exception e) {
e.printstacktrace ();
}
}
}