1、輸入に依存
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<! - HTTPClientの- > < 依存> < groupIdを> org.apache.httpcomponents </ groupIdを> < たartifactId > HTTPClientの</ たartifactId > < バージョン> 4.5.3 </ バージョン> </ 依存関係> < 依存> < groupIdを> org.apache.httpcomponents </ groupIdを> < たartifactId > httpmime </ たartifactId > <バージョン> 4.5.3 </ バージョン> </ 依存関係> < 依存> < groupIdを>コモンズ・コーデック</ groupIdを> < たartifactId >コモンズ・コーデック</ たartifactId > </ 依存関係> < 依存> < groupIdを>コモンズ、ログ< / のgroupId > < たartifactId >コモンズ・ログ</ たartifactId > <バージョン> 1.1.1 </ バージョン> </ 依存関係> < 依存> < groupIdを> org.apache.httpcomponents </ groupIdを> < たartifactId > httpcore </ たartifactId > </ 依存関係> <! - gson工具、封装HTTP用- - > < 依存> < groupIdを> com.google.code.gson </ groupIdを> < たartifactId > gson </ たartifactId > < バージョン> 2.8.0 </ バージョン> </ 依存関係>
2、パッケージGETとPOST
JSONへのGsonマップを使用して、メソッドが返すJSON形式の文字列を取得
パッケージnet.xdclass.xdvidio.utils。 輸入com.google.gson.Gson; 輸入org.apache.http.HttpEntity。 輸入org.apache.http.HttpResponse。 輸入org.apache.http.client.config.RequestConfig; 輸入org.apache.http.client.methods.CloseableHttpResponse。 輸入org.apache.http.client.methods.HttpGet; 輸入org.apache.http.client.methods.HttpPost; 輸入org.apache.http.entity.StringEntity。 輸入org.apache.http.impl.client.CloseableHttpClient; 輸入org.apache.http.impl.client.HttpClients。 輸入org.apache.http.util.EntityUtils。 輸入sun.net.www.http.HttpClient; 輸入java.util.HashMapを; 輸入java.util.Map; / ** * @Authorパンダ * @Date 2020年4月9日夜10時41分 * @Version 1.0 * @description封装HTTP GET、POST * / publicクラスのHttpUtils { 静的な地図< 文字列、オブジェクト>マップ=新しいHashMapの<> (); プライベート静的最終Gson gson =新しいGson(); / ** *取得する * @param URL * @return * / パブリック静的地図< 文字列、オブジェクト> doGetメソッド(文字列のURL){ CloseableHttpClientのHttpClient = HttpClients.createDefault(); .setSocketTimeout(5000) RequestConfig requestConfig = RequestConfig.custom()。setConnectTimeout(5000)//连接超时 .setConnectionRequestTimeout(5000)//请求超时 .setRedirectsEnabled(真)//允许自动重定向 .build(); HTTPGET HTTPGET =新しいHTTPGET(URL); httpGet.setConfig(requestConfig)。 試す{ のHttpResponseをhttpResponse = httpClient.execute(HTTPGET)。 IF(httpResponse.getStatusLine()getStatusCode()== 200){ 文字列化するJsonResult = EntityUtils.toString(httpResponse.getEntity())。 地図= gson.fromJson(化するJsonResult、map.getClass())。 } }キャッチ(例外e){ e.printStackTrace(); }最後に{ {みてください httpClient.close()。 }キャッチ(例外e){e.printStackTrace();} } マップを返します。 } / ** *封装ポスト * @return * / パブリック静的な文字列のdoPost(文字列のURL、文字列データ、整数タイムアウト){ CloseableHttpClientのHttpClient = HttpClients.createDefault()。 HttpPost httpPost =新しいHttpPost(URL); httpPost.addHeader( "Content-Typeの"、 "text / htmlの; chartset = UTF-8"); //设置超时时间 。RequestConfig requestConfig = RequestConfig.custom()setConnectTimeout(タイムアウト)//连接超时 .setConnectionRequestTimeout(タイムアウト)//请求超时 .setSocketTimeout(タイムアウト) //自動リダイレクトを許可する(trueに).setRedirectsEnabled .build(); httpPost.setConfig(requestConfig)。 (データ!= nullの場合&・データ列のinstanceof){ //使用字符串传参 StringEntity stringEntry =新しいStringEntity(データ、 "UTF-8"); httpPost.setEntity(stringEntry)。 } {試みる CloseableHttpResponseをhttpResponse = httpClient.execute(httpPost)。 HttpEntity httpEntity = httpResponse.getEntity()。 (httpResponse.getStatusLine()getStatusCode()== 200){もし 文字列結果= EntityUtils.toString(httpEntity)。 結果を返します。 } }キャッチ(例外e){e.printStackTrace();} 最後に{ 試み{ httpClient.close()。 }キャッチ(例外e){e.printStackTrace();} } 戻りヌル。 } }
3、ルーチンの要約
1、のHTTPClientの例
HTTPリクエストの2例(HTTPGET / httpPost / ETA)
3、要求に情報を追加します
POSTリクエストのヘッダ要求(のaddHeader)、リクエストボディ(setEntity)
要求の構成requestConfigの例として、要求にロードされ、ETA
4、HTTPClientのサーバを行うHTTPリクエストとリターンをhttpResponse
httpResponseから必要な情報を取得します
5、近くのHttpClient。