JDK предоставляет некоторую поддержку запросов протокола без сохранения состояния (HTTP).
Сначала давайте построим класс запросов (httprequester).
Этот класс инкапсулирует код для Java для реализации простых запросов следующим образом:
Кода -копия выглядит следующим образом:
Импорт java.io.bufferedReader;
импортировать java.io.ioexception;
импортировать java.io.inputstream;
Импорт java.io.inputStreamReader;
Импорт java.net.httpurlConnection;
импортировать java.net.url;
Импорт java.nio.charset.charset;
импортировать java.util.map;
импортировать java.util.vector;
/**
* Объект HTTP -запроса
*
* @author yymmiinngg
*/
открытый класс httprequester {
частная строка defaultContentEncoding;
public httprequester () {
this.defaultcontentencoding = charset.defaultCharset (). name ();
}
/**
* Отправить запрос на получение
*
* @param urlstring
* URL -адрес
* @return Recsion объект
* @Throws ioException
*/
public httprespons sendget (string urlstring) бросает ioexception {
вернуть this.send (urlstring, «Get», Null, Null);
}
/**
* Отправить запрос на получение
*
* @param urlstring
* URL -адрес
* @param params
* Набор параметров
* @return Recsion объект
* @Throws ioException
*/
public httprespons sendget (string urlstring, map <string, string> params)
бросает ioException {
вернуть это.
}
/**
* Отправить запрос на получение
*
* @param urlstring
* URL -адрес
* @param params
* Набор параметров
* @param Properties
* Запрос атрибутов
* @return Recsion объект
* @Throws ioException
*/
public httprespons sendget (string urlstring, map <string, string> params,
Карта <string, string> свойства) бросает ioException {
вернуть это.
}
/**
* Отправить запрос сообщения
*
* @param urlstring
* URL -адрес
* @return Recsion объект
* @Throws ioException
*/
public httprespons sendpost (string urlstring) бросает ioexception {
вернуть this.send (urlstring, "post", null, null);
}
/**
* Отправить запрос сообщения
*
* @param urlstring
* URL -адрес
* @param params
* Набор параметров
* @return Recsion объект
* @Throws ioException
*/
public httprespons sendpost (string urlstring, map <string, string> params)
бросает ioException {
вернуть это.
}
/**
* Отправить запрос сообщения
*
* @param urlstring
* URL -адрес
* @param params
* Набор параметров
* @param Properties
* Запрос атрибутов
* @return Recsion объект
* @Throws ioException
*/
public httprespons sendpost (string urlstring, map <string, string> params,
Карта <string, string> свойства) бросает ioException {
вернуть это.
}
/**
* Отправить http -запрос
*
* @param urlstring
* @return Reflection Object
* @Throws ioException
*/
Частные httprespons send (String urlstring, String Method,
Карта <строка, строка> параметры, карта <строка, строка> свойства)
бросает ioException {
Httpurlconnection urlconnection = null;
if (method.equalsignorecase ("get") && параметры! = null) {
StringBuffer param = new StringBuffer ();
int i = 0;
for (String Key: parameters.keyset ()) {
if (i == 0)
param.append ("?");
еще
param.append ("&");
param.append (key) .append ("="). Append (parameters.get (key));
i ++;
}
urlString += param;
}
Url url = new URL (urlString);
urlConnection = (httpurlconnection) url.openconconection ();
urlConnection.setRequestMethod (метод);
urlConnection.setDoOutput (true);
urlConnection.setDoinput (true);
urlConnection.setUseCaches (false);
if (свойства! = NULL)
for (String Key: Properties.keySet ()) {
urlConnection.AddRequestProperty (Key, Properties.get (Key));
}
if (method.equalsignorecase ("post") && parameters! = null) {
StringBuffer param = new StringBuffer ();
for (String Key: parameters.keyset ()) {
param.append ("&");
param.append (key) .append ("="). Append (parameters.get (key));
}
urlConnection.getOutputStream (). write (param.toString (). getBytes ());
urlConnection.getOutputStream (). flush ();
urlConnection.getOutputStream (). Close ();
}
вернуть это.makeContent (urlString, urlConnection);
}
/**
* Получите объект ответа
*
* @param urlconnection
* @return Recsion объект
* @Throws ioException
*/
Частный httprespons makecontent (String urlstring,
Httpurlconnection urlconnection) бросает ioexception {
Httprespons httpresponser = new httprespons ();
пытаться {
InputStream in = urlConnection.getInputStream ();
BufferedReader BufferedReader = New BufferedReader (
новый InputStreamReader (in));
httpresponser.contentcollection = new Vector <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 = new String (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 ();
вернуть httpresponser;
} catch (ioException e) {
бросить E;
} окончательно {
if (urlconnection! = null)
urlConnection.disconnect ();
}
}
/**
* Набор символов ответа по умолчанию
*/
public String getDefaultContentEncoding () {
вернуть это.defaultContentEncoding;
}
/**
* Установите набор символов ответа по умолчанию
*/
public void setDefaultContentEncoding (String defaultContentEncoding) {
this.defaultcontentencoding = defaultContentEncoding;
}
}
Во -вторых, давайте посмотрим на объект ответа (httprespons). Объект ответа на самом деле - это просто боб данных, который инкапсулирует данные результата ответа на запрос следующим образом:
Кода -копия выглядит следующим образом:
импортировать java.util.vector;
/**
* Объект ответа
*/
открытый класс httprespons {
String urlString;
int defaultport;
Строковый файл;
Строка хост;
Струнный путь;
int порт;
Строковый протокол;
Строковый запрос;
String Ref;
String userInfo;
String ContentEcoding;
Строка содержание;
String contentType;
int code;
Строковое сообщение;
Строка метод;
int connecttimeout;
int Readtimeout;
Vector <string> ContentCollection;
public String getContent () {
вернуть контент;
}
public String getContentType () {
вернуть ContentType;
}
public int getCode () {
код возврата;
}
public String getMessage () {
вернуть сообщение;
}
Public Vector <string> getContentCollection () {
вернуть контент -колледж;
}
public String getContentEncoding () {
вернуть контенткодирование;
}
public String getMethod () {
Метод возврата;
}
public int getConnecttimeout () {
return connecttimeout;
}
public int getReadTimeOut () {
вернуть readtimeout;
}
public String getUrlString () {
вернуть UrlString;
}
public int getDefaultport () {
вернуть defaultport;
}
public String getFile () {
вернуть файл;
}
public String gethost () {
возвратный хост;
}
public String getPath () {
возвратный путь;
}
public int getport () {
вернуть порт;
}
public String getProtocol () {
протокол возврата;
}
public String getQuery () {
вернуть запрос;
}
public String getRef () {
вернуть ref;
}
public String getUserinfo () {
вернуть userInfo;
}
}
Наконец, давайте напишем класс приложения, чтобы проверить, правильным ли вышеуказанный код
Кода -копия выглядит следующим образом:
Импорт com.yao.http.httprequester;
Импорт com.yao.http.httprespons;
открытый тест класса {
public static void main (string [] args) {
пытаться {
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.getContentEncoding ());
System.out.println (hr.getMethod ());
System.out.println (hr.getContent ());
} catch (Exception e) {
e.printstacktrace ();
}
}
}