HttpClientを、okhttp、違いJodd-HTTPを使用

HTTPデータを交換するための最も一般的な方法のネットワークとして要求、別のHTTPクライアント、ここのHttpClient、okhttp、Jodd-HTTP 3つのプット、比較を行うために、ポストリクエストメソッド意志パフォーマンスの使用に違いがあります。

1          <依存性>
 2              <のgroupId> org.jodd </ groupIdを>
 3              <たartifactId> jodd-HTTP </たartifactId>
 4              <バージョン> 5.1.4 </バージョン>
 5          </依存>
 6  
7          <! - HTTPS:// mvnrepository.com/artifact/com.squareup.okhttp3/okhttp - > 
8          <依存性>
 9              <のgroupId> com.squareup.okhttp3 </ groupIdを>
 10              <たartifactId> okhttp </たartifactId>
 11              <バージョン> 4.4。 0 </バージョン>
 12          </依存>
13  
14          < -のhttps:!//mvnrepository.com/artifact/org.apache.httpcomponents/httpclient - > 
15          <依存性>
 16              <のgroupId> org.apache.httpcomponents </ groupIdを>
 17              <たartifactId> HTTPClientの</たartifactId>
 18              <バージョン> 4.5.12 < /バージョン>
 19          </依存>
 20  
21          < -のhttps:// mvnrepository.com/artifact/com.alibaba/fastjson - > 
22          <依存>
 23              <groupIdを> com.alibaba </ groupIdを>
 24              <たartifactId > fastjson </たartifactId>
 25              <バージョン> 1.2。
62 </バージョン> 26         </依存関係>
 27         
必要な依存関係

ApacheのHttpClientを

  次の手順で要求を送信:

  1. 後者の非同期CloseableHttpClientオブジェクト/ CloseableHttpAsyncClientオブジェクト、元の同期を作成します
  2. Http具体的なオブジェクトを作成するための要求、例えばHTTPGET、HttpPost
  3. 実行する前に、startメソッドと呼ばれる非同期要求であれば、要求を実行executeメソッドを呼び出します

リクエストを取得

    @Test
     公共 無効 testApacheHttpGet(文字列URL)がスローにIOException {
         // 設定されたタイムアウト 
        RequestConfigコンフィグ= RequestConfig.custom()
                .setConnectTimeout( 60 * 1000)        // 接続時間 
                .setSocketTimeout(* 1000年60)      // サーバからの取得応答をタイムアウトデータ
                .build(); 
        CloseableHttpClientクライアント = HttpClientBuilder.create()ビルド();. 
        HTTPGET HTTPGET = 新新HTTPGET(URL); 
        httpGet.setConfig(設定); 
        CloseableHttpResponseレスポンス =client.execute(HTTPGET)。
        System.out.println(EntityUtils.toString(response.getEntity()))。
    }

ポストの要求:

    @Test
     公共 無効 testApacheHttpPost(文字列のURL)スローIOExceptionが{ 
        CloseableHttpClientクライアント = HttpClientBuilder.create()ビルド(); 
        HttpPost httpPost = 新しいHttpPost(URL); 
        httpPost.setHeader( "コンテンツタイプ"、 "アプリケーション/ JSON;のcharset = UTF8" )。
        httpPost.setEntity(新しい StringEntity( JSONObject()のtoString()));  // 设置请求体 
        CloseableHttpResponse応答= client.execute(httpPost)。
        System.out.println(EntityUtils.toString(response.getEntity()))。
    }

okhttp

  次の手順で要求を送信:

  1. OkHttpClientを作成されたオブジェクト
  2. Requestオブジェクトを作成します。
  3. コールRequestオブジェクトのカプセル化
  4. 同期または非同期の要求をコールすることによって行われる、方法を実行する同期実行と呼ばれる、非同期メソッドがエンキューを行う呼び出し

リクエストを取得します:

    @Test 
    公共ボイドtestOkHttpGet(文字列のURL)がスローにIOException { 
        リクエスト要求=新しいRequest.Builderを()
                た.url(URL)
                に.get()
                .build(); 
        コールコール= okHttpClient.newCall(リクエスト)。 応答レスポンス= call.execute()。 System.out.println(response.body()のtoString())。 }

ポストの要求:

    @Test 
    公共ボイドtestOkHttpPost(文字列のURL)スローIOExceptionが{ 
        JSONObject JSON =新しいJSONObject()。
        RequestBody本体= RequestBody.create(MediaType.parse( "アプリケーション/ JSON;のcharset = UTF-8" )、String.valueOf(JSON))。 リクエストビルド=新しいRequest.Builder() する.url(URL) .post(ボディ) .header( "Content-Typeの"、 "アプリケーション/ jsonの;のcharset = UTF8" ).build(); コールコール= okHttpClient.newCall(ビルド)。応答レスポンス= call.execute()。ストリングストリング= response.body()文字列()。}

設定されたタイムアウト

        =新しい新しいクライアントOkHttpClient OkHttpClient.Builder()
                .connectTimeout(60、TimeUnit.SECONDS)//セット接続時間
                読み取りタイムアウトの設定.readTimeout(60、TimeUnit.SECONDS)// 
                .buildを();

すべての要求が設定アウトこの方法を取られることを意味し、クライアントのタイムアウトを設定します。

Jodd-HTTP

  非常に使いやすく、便利な軽量、ネイティブHTTPクライアントを、提供Jodd。

リクエストを取得します:

 リクエストパラメータを直接URLの後ろにスプライシングされ得る、方法は、クエリで指定することができます()

    @Test
     公共 ボイド testJoddHttpGet(文字列URL)がスローにIOException { 
        のHttpResponseレスポンス = のHttpRequest 
                に.get(URL)        // 割当要求モード 
                .contentType( "ファイルアプリケーション/ JSON")   // エンコード指定 
                .query( "XXX"、 "XXXを " 
                .connectionKeepAlive(真の// 長い接続  
                .timeout(60 * 1000)   // タイムアウト設定 
                .send();         // リクエストを送信
        するSystem.out.println(response.bodyText()); 
    }

  サーバから返された応答データを格納します。応答の例は、以下のような属性の種々から抽出することができるstatusCode()、またはstatusPhrase()。

  応答は、次の3つの方法でレスポンスボディをお読みください。

        指定されたヘッダ情報にresponse.bodyText()本文は、符号化された
        response.bodyBytesバイト()本体
        ISO-8859-1符号化response.bodyを()

ポストの要求:

  bodyText当該リクエストボディに保存されています。また、パラメータの形式(「XX」、「XX」)フォームを追加することができます

    公共 ボイド testJoddHttpPost(文字列のURL)がスローにIOException { 
        のHttpResponse応答 = のHttpRequest 
                .post(URL)
                .contentType( "アプリケーション/ JSON" 
                .bodyText( "XXX" 
                .send(); 
        System.out.println(response.bodyText())。
    }

要約:

  • 符号量の面ではjodd-HTTP <okhttp <apacheの-HTTP。
  • タイムアウト設定は、jodd-httpと設定し、クライアント上のApache-HTTPClientのより柔軟な、okhttp、単一のセットを要求することはできません。

おすすめ

転載: www.cnblogs.com/jiezai/p/12512600.html