Javaの - HTTP2を使用して複数の要求を作ります

user2924127:

私が使用してアウトラインのすべての偉大な例を見つけることができていないJavaの新しいHTTP2サポートを。

Javaの以前のバージョンの(でJava 8)私はに多くのコール作っていたREST複数のスレッドを使用してサーバを。

私は、パラメータのグローバルリストを持っていたと私は要求の異なる種類を作るためのパラメータを通過します。

例えば:

String[] params = {"param1","param2","param3" ..... "paramSomeBigNumber"};

for (int i = 0 ; i < params.length ; i++){

   String targetURL= "http://ohellothere.notarealdomain.commmmm?a=" + params[i];

   HttpURLConnection connection = null;

   URL url = new URL(targetURL);
   connection = (HttpURLConnection) url.openConnection();
   connection.setRequestMethod("GET");

   //Send request
   DataOutputStream wr = new DataOutputStream (
        connection.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.close();

    //Get Response  
    InputStream is = connection.getInputStream();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

//Do some stuff with this specific http response

}

私はどうなるのか、前のコードでは、複数の構築物であるHTTPパラメータでほんの少しの変化で同じサーバに要求を。これは、各スレッドはのparam配列のいくつかの塊に働くだろうように、私もスレッドを使用して仕事を壊すので、完了するまでにしばらく時間がかかりました。

HTTP2私は今、ブランドの新しい接続を毎回作成する必要はありません。問題は、私はかなりのJavaの新しいバージョンを(使用して、これを実装する方法を理解していないですJava 9 - 11)。

私がそうであるように、私は、配列のparamを持っている場合は、以前にどのように私は次のようにします:

1) Re-use the same connection?
2) Allow different threads to use the same connection?

基本的に私は、私が以前にやったが、今利用して何をすべきかの例を探していますHTTP2

よろしく

ジェイコブG.:

これは、各スレッドはのparam配列のいくつかの塊に働くだろうように、私もスレッドを使用して仕事を壊すので、完了するまでにしばらく時間がかかりました。

Javaの11件のではHttpClient、これは達成するために実際には非常に簡単です。あなたが必要なのは、以下の抜粋です。

var client = HttpClient.newBuilder().version(HttpClient.Version.HTTP_2).build();

String[] params = {"param1", "param2", "param3", "paramSomeBigNumber"};

for (var param : params) {
    var targetURL = "http://ohellothere.notarealdomain.commmmm?a=" + param;
    var request = HttpRequest.newBuilder().GET().uri(new URI(targetURL)).build();
    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
          .whenComplete((response, exception) -> {
              // Handle response/exception here
          });
}

この用途HTTP / 2は、非同期要求を送信し、応答を処理するためにString(またはThrowableそれがコールバックで受信されたとき)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=173490&siteId=1