Das JDK bietet eine gewisse Unterstützung für staatsfreundliche Protokollanfragen (HTTP).
Lassen Sie uns zunächst eine Anforderungsklasse (httprequester) erstellen.
Diese Klasse fasst den Code für Java zusammen, um einfache Anforderungen zu implementieren, wie folgt:
Die Codekopie lautet wie folgt:
Import Java.io.BufferedReader;
importieren java.io.ioException;
importieren java.io.inputstream;
importieren java.io.inputStreamReader;
importieren java.net.httpurlConnection;
importieren java.net.url;
importieren java.nio.charset.charset;
import Java.util.map;
Import Java.util.Vector;
/**
* HTTP -Anforderungsobjekt
*
* @author yymmiinngg
*/
öffentliche Klasse httprequester {
private String StandardContentCoding;
public httprequester () {
this.DefaultContentCoding = charSet.DefaultCharSet (). name ();
}
/**
* Senden Sie eine Get -Anfrage
*
* @param urlstring
* URL -Adresse
* @Return Antwortobjekt
* @throws ioException
*/
public httprespons sendget (String urlString) löst IoException {aus
kehren Sie diese.
}
/**
* Senden Sie eine Get -Anfrage
*
* @param urlstring
* URL -Adresse
* @param params
* Parametersatz
* @Return Antwortobjekt
* @throws ioException
*/
public httprespons sendget (String urlstring, map <string, String> Params)
löst ioException {aus
Rückgabe dieses.
}
/**
* Senden Sie eine Get -Anfrage
*
* @param urlstring
* URL -Adresse
* @param params
* Parametersatz
* @param Eigenschaften
* Anforderungsattribute
* @Return Antwortobjekt
* @throws ioException
*/
public httprespons sendget (String urlstring, map <string, string> params,
Karte <String, String> Eigenschaften) löst ioException {aus
zurückgeben.
}
/**
* Postanfrage senden
*
* @param urlstring
* URL -Adresse
* @Return Antwortobjekt
* @throws ioException
*/
public httprespons sendPost (String urlString) löst IOException {aus
zurückgeben.
}
/**
* Postanfrage senden
*
* @param urlstring
* URL -Adresse
* @param params
* Parametersatz
* @Return Antwortobjekt
* @throws ioException
*/
public httprespons sendPost (String urlstring, map <String, String> Params)
löst ioException {aus
zurückgeben.
}
/**
* Postanfrage senden
*
* @param urlstring
* URL -Adresse
* @param params
* Parametersatz
* @param Eigenschaften
* Anforderungsattribute
* @Return Antwortobjekt
* @throws ioException
*/
public httprespons sendPost (String urlstring, map <String, String> Params,
Karte <String, String> Eigenschaften) löst ioException {aus
zurückgeben.
}
/**
* HTTP -Anfrage senden
*
* @param urlstring
* @Return Reflection Objekt
* @throws ioException
*/
private httprespons senden (String urlstring, String -Methode,
Karte <String, String> Parameter, Karte <String, String> Eigenschaften)
löst ioException {aus
HttpurlConnection urlConnection = null;
if (method.equalSignoreCase ("get") && Parameter! = null) {
StringBuffer param = new StringBuffer ();
int i = 0;
für (String -Schlüssel: parameter.keyset ()) {
if (i == 0)
param.append ("?");
anders
param.append ("&");
Param.Append (Schlüssel) .Append ("="). append (parameters.get (Schlüssel));
i ++;
}
urlstring += param;
}
URL URL = neue URL (urlstring);
urlConnection = (httpurlConnection) url.openconnection ();
urlConnection.setRequestMethod (Methode);
urlConnection.setDooutput (true);
urlConnection.setDoInput (true);
urlConnection.setUSecaches (falsch);
if (Eigenschaften! = null)
für (String -Schlüssel: Eigenschaften.keyset ()) {
urlConnection.addRequestProperty (Schlüssel, Eigenschaften.get (Schlüssel));
}
if (method.equalSignoreCase ("post") && parameter! = null) {
StringBuffer param = new StringBuffer ();
für (String -Schlüssel: parameter.keyset ()) {
param.append ("&");
Param.Append (Schlüssel) .Append ("="). append (parameters.get (Schlüssel));
}
urlConnection.getOutputStream (). Write (param.toString (). getBytes ());
urlConnection.getOutputStream (). Flush ();
urlConnection.getOutputStream (). close ();
}
kehren Sie dies zurück.
}
/**
* Holen Sie sich das Antwortobjekt
*
* @param urlConnection
* @Return Antwortobjekt
* @throws ioException
*/
private httprespons makecontent (String urlstring,
HttpurlConnection urlConnection) löst ioException {aus
Httprespons httpresponser = new httprespons ();
versuchen {
InputStream in = urlConnection.getInputStream ();
BufferedReader BufferedReader = New BufferedReader (
neuer InputStreamReader (in));
httpresponser.contentCollection = new vector <string> ();
StringBuffer temp = new StringBuffer ();
String line = bufferedReader.readline ();
while (line! = null) {
httpresponser.contentCollection.add (Linie);
temp.Append (Zeile) .Append ("/r/n");
line = bufferedReader.readline ();
}
bufferedReader.close ();
String ecod = urlConnection.getContentCoding ();
if (ecod == null)
ecod = this.DefaultContentCoding;
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 = new String (temp.toString (). getBytes (), ecod);
httpresponser.contentCoding = ecod;
httpresponser.code = urlConnection.getResponScode ();
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) {
werfen e;
} Endlich {
if (urlConnection! = null)
urlConnection.disconnect ();
}
}
/**
* Der Standard -Antwortzeichen setzt fest
*/
public String getDefaultContentCoding () {
zurückgeben. DefaultContentCoding;
}
/**
* Setzen Sie den Standard -Antwortzeichensatz fest
*/
public void setDefaultContentCoding (String StandardContentCoding) {
this.DefaultContentCoding = defaultContentCoding;
}
}
Zweitens schauen wir uns das Antwortobjekt (httprespons) an. Das Antwortobjekt ist eigentlich nur eine Datenbean, die die Ergebnisdaten der Anforderungsantwort wie folgt zusammenfasst:
Die Codekopie lautet wie folgt:
Import Java.util.Vector;
/**
* Antwortobjekt
*/
öffentliche Klasse httprespons {
String -UrlString;
int defaultPort;
String -Datei;
String -Host;
Saitenpfad;
int Port;
String -Protokoll;
String -Abfrage;
String Ref;
String userInfo;
String contentCoding;
String -Inhalt;
String contentType;
int Code;
String -Nachricht;
String -Methode;
int ConnectTimeout;
int readtimeout;
Vector <String> contentCollection;
public String getContent () {
Inhalt zurückgeben;
}
public String getContentType () {
ContentType zurückgeben;
}
public int getcode () {
Rückgabecode;
}
public String getMessage () {
Meldung zurückgeben;
}
public vector <string> getContentCollection () {
ContentCollection zurückgeben;
}
public String getContentCoding () {
Contentencodierung zurückgeben;
}
public String getMethod () {
Rückgabemethode;
}
public int getConnectTimeout () {
return ConnectTimeout;
}
public int getReadtimeout () {
ReadTimeout zurückgeben;
}
public String geturlstring () {
return urlstring;
}
public int getDefaultPort () {
Rückgabesport zurückgeben;
}
public String getFile () {
Rückgabedatei;
}
public String Gethost () {
Return Host;
}
public String getPath () {
Rückweg;
}
public int getSport () {
Rückgabeanschluss;
}
public String getProtocol () {
Protokoll zurückgeben;
}
public String getQuery () {
Rückgabeabfrage;
}
public String getRef () {
Return Ref;
}
public String getUserinfo () {
userInfo zurückgeben;
}
}
Schreiben wir schließlich eine Anwendungsklasse, um zu testen, ob der obige Code korrekt ist
Die Codekopie lautet wie folgt:
import com.yao.http.httprequester;
import com.yao.http.httprespons;
öffentliche Klassen -Test {
public static void main (String [] args) {
versuchen {
Httprequester request = new httprequester ();
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.getContentCoding ());
System.out.println (hr.getmethod ());
System.out.println (hr.getContent ());
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
}