コモンズ-HttpClientを、元のApache Commonsのプロジェクト内の構成要素である、プロジェクトが今HttpComponents置換されている、代替インターフェースとしてHTTP呼び出され、物品は、その使用を記載しています。Javaの1.8.0_191、コモンズ - HttpClientを3.1:ソフトウェアバージョンに本明細書中で使用されます。
1、サーバー
参照書き込みサーバ- JavaはHTTPインターフェイス(1)を呼び出します
2、コール
2.1、GETリクエスト
公共の 静的な 無効のget(){ 試み{ 文字列requestPath = "のhttp:// localhostを:?8080 / webframe /デモ/テスト/ getUserメソッドのuserId = 1000&userNameの=" + URLEncoder.encode( "李白"、 "UTF-8" )。 HttpClientをHttpClientを = 新しいHttpClientを(); GetMethod GET = 新しいGetMethod(requestPath)。 int型のステータス= httpClient.executeMethod(GET); もし(ステータス== HttpStatus.SC_OK){ するSystem.out.println( "GET返回结果:" + get.getResponseBodyAsString())。 } 他{ System.out.println( "GETはステータスコードを返す:" + ステータス); } } キャッチ(例外e){ e.printStackTrace(); } }
2.2、POST要求(データ送信のキーと値のペア)
公共の 静的な 無効ポスト(){ 試み{ 文字列requestPath = "にhttp:// localhost:8080 / webframe /デモ/テスト/ getUserメソッド" 。 HttpClientをHttpClientを = 新しいHttpClientを(); PostMethodポスト = 新しいPostMethod(requestPath)。 post.addRequestHeader( "のContent-Type"、 "アプリケーション/ x-www-form-urlencodedで;のcharset = UTF-8" )。 文字列のparam = "userIdを= 1000&userNameの=李白" ; post.setRequestEntity(新しいStringRequestEntity(パラメータ)); int型のステータス=httpClient.executeMethod(POST); IFは(状況== HttpStatus.SC_OK){ するSystem.out.printlnは( "POST結果を返す:" + post.getResponseBodyAsString()); } 他{ するSystem.out.println(「復帰状態POSTコード:「+ ステータス); } } キャッチ(例外e){ e.printStackTrace(); } }
2.3、POST要求(JSONデータ伝送)
公共の 静的な 無効POST2(){ 試み{ 文字列requestPath = "にhttp:// localhost:8080 / webframe /デモ/テスト/アドユーザー" ; HttpClientをHttpClientを = 新しいHttpClientを(); PostMethodポスト = 新しいPostMethod(requestPath)。 post.addRequestHeader( "コンテンツタイプ"、 "アプリケーション/ JSON" ); ストリングPARAM = "{\"はuserId \ ":\" 1001 \ "\ "名\":\ "杜甫\"}" 。 post.setRequestEntity(新しいStringRequestEntity(パラメータ)); IF(ステータス== HttpStatus.SC_OK){ するSystem.out.printlnは( "POST結果を返す:" + post.getResponseBodyAsString()); } 他{ するSystem.out.printlnを( "POSTは、ステータスコードを返す:" + ステータス)。 } } キャッチ(例外e){ e.printStackTrace(); } }
2.4、ファイルをアップロードし、データキーを送信
公共の 静的な 無効マルチ(){ 試み{ 文字列requestPath = "にhttp:// localhost:8080 / webframe /デモ/テスト/マルチ" ; HttpClientをHttpClientを = 新しいHttpClientを(); PostMethodポスト = 新しいPostMethod(requestPath)。 ファイルファイル = 新しいファイル( "D:/a.jpg" ); 一部[]部分 = { 新しい FilePart( "ファイル"、ファイル)、新しい StringPart( "PARAM1"、 "参数1"、 "UTF-8")、新しい StringPart( "PARAM2"、 "参数2"、「UTF- 8" )}。 新しいMultipartRequestEntity(パーツ、post.getParams())); int型のステータス= httpClient.executeMethod(ポスト)。 もし(ステータス== HttpStatus.SC_OK){ するSystem.out.println( "マルチ返回结果:" + post.getResponseBodyAsString())。 } 他{ (System.out.printlnは "マルチ返回状态码:" + ステータス)。 } } キャッチ(例外e){ e.printStackTrace(); } }
2.5、完全な例
パッケージcom.inspur.http。 インポートのjava.io.File; 輸入java.net.URLEncoder; 輸入org.apache.commons.httpclient.HttpClient; 輸入org.apache.commons.httpclient.HttpStatus; 輸入org.apache.commons.httpclient.methods.GetMethod; 輸入org.apache.commons.httpclient.methods.PostMethod; 輸入org.apache.commons.httpclient.methods.StringRequestEntity。 輸入org.apache.commons.httpclient.methods.multipart.FilePart; 輸入org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity。 輸入org.apache.commons.httpclient.methods.multipart.Part; インポートorg.apache.commons.httpclient.methods.multipart.StringPart; / ** * *通过コモンズ-HttpClientを调用のHttp接口 * * / パブリック クラスCommonsHttpClientCase { / ** * GET请求 * / パブリック 静的な 空のget(){ 試み{ 文字列requestPath =「にhttp:// localhost:8080 / webframe /デモ/試験/のgetUserのuserId = 1000&のuserName =」+ URLEncoder.encode( "李白"、 "UTF-8"? )。 HttpClientをHttpClientを = 新しいHttpClientを(); GetMethod GET = 新しいGetMethod(requestPath)。 int型=ステータスhttpClient.executeMethod(GET); IF(ステータス== HttpStatus.SC_OK){ するSystem.out.println( "GETが結果を返す:" + get.getResponseBodyAsString()); } 他{ するSystem.out.println(「GETリターンステータスコード:「+ 状態); } } キャッチ(例外E){ e.printStackTrace(); } } / ** * POSTリクエスト(データ用送信キー) * / パブリック 静的な 無効POST(){ 試み{ 文字列requestPath= "にhttp:// localhost:8080 / webframe /デモ/テスト/ getUserメソッド" 。 HttpClientをHttpClientを = 新しいHttpClientを(); PostMethodポスト = 新しいPostMethod(requestPath)。 post.addRequestHeader( "のContent-Type"、 "アプリケーション/ x-www-form-urlencodedで;のcharset = UTF-8" )。 文字列のparam = "userIdを= 1000&userNameの=李白" ; post.setRequestEntity(新しいStringRequestEntity(パラメータ)); int型のステータス= httpClient.executeMethod(ポスト)。 もし(ステータス== HttpStatus.SC_OK){ System.out.println( "post.getResponseBodyAsString())。 } 他{ するSystem.out.println( "POST返回状态码:" + ステータス)。 } } キャッチ(例外e){ e.printStackTrace(); } } / ** * POST请求(发送JSON数据) * / パブリック 静的な 無効POST2(){ 試み{ 文字列requestPath = "にhttp:// localhost:8080 / webframe /デモ/テスト/アドユーザー" ; HttpClientをHttpClientを = 新しいHttpClientを(); PostMethodポスト = 新しいPostMethod(requestPath)。 post.addRequestHeader( "コンテンツタイプ"、 "アプリケーション/ JSON" ); ストリングPARAM = "{\"はuserId \ ":\" 1001 \ "\ "名\":\ "杜甫\"}" 。 post.setRequestEntity(新しいStringRequestEntity(パラメータ)); int型のステータス= httpClient.executeMethod(ポスト)。 もし(ステータス== HttpStatus.SC_OK){ System.out.printlnは( "POST返回结果:" + post.getResponseBodyAsString())。 } 他{ するSystem.out.println( "POST返回状态码:" + 状態)。 } } キャッチ(例外E){ e.printStackTrace(); } } / ** *アップロードされたデータとキー送信 * / パブリック 静的な 無効マルチを(){ 試み{ 文字列requestPath =「HTTP:// localhostを:8080 / WebFrame /デモ/テスト/マルチ" ; のHttpClientのHttpClient = 新しい新しいHttpClientを(); PostMethod POST = 新しい新しいPostMethod(requestPath); ファイルファイル = 新しい新しいファイル(" D:/a.jpg " ); パート[]パーツ= { 新しい FilePart( "ファイル"、ファイル)、新しい StringPart( "PARAM1"、 "参数1"、 "UTF-8")、新しい StringPart( "PARAM2"、 "参数2"、 "UTF-8" )} ; post.setRequestEntity(新しいMultipartRequestEntity(パーツ、post.getParams())); int型のステータス= httpClient.executeMethod(ポスト)。 もし(ステータス== HttpStatus.SC_OK){ するSystem.out.println( "マルチ返回结果:" + post.getResponseBodyAsString())。 } 他{ (System.out.printlnは "マルチ返回状态码:" + ステータス)。キャッチ(例外e){ e.printStackTrace(); } } パブリック 静的 ボイドメイン(文字列[]引数){ GET()。 役職(); POST2(); マルチ()。 } }