Java - Cómo hacer varias peticiones usando HTTP2

user2924127:

No he podido encontrar ningún grandes ejemplos para delinear utilizando Java's nuevo HTTP2apoyo.

En las versiones anteriores de Java ( Java 8) estaba haciendo muchas llamadas a un RESTservidor utilizando varios subprocesos.

Tenía una lista global de parámetros y me gustaría ir a través de los parámetros para realizar diferentes tipos de peticiones.

Por ejemplo:

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

}

En el código anterior lo que haría es construir múltiples HTTPpeticiones al mismo servidor con sólo un pequeño cambio en el parámetro. Esto tomó un tiempo para completar así que incluso rompería el trabajo con hilos de manera que cada hilo trabajaría en alguna parte de la matriz parámetro.

Con HTTP2que ahora no tendría que crear una nueva conexión cada vez que marca. El problema es que no entiendo muy bien cómo implementar esto utilizando las nuevas versiones de Java ( Java 9 - 11).

Si tengo un parámetro de matriz como hago con anterioridad cómo iba a hacer lo siguiente:

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

Esencialmente Busco un ejemplo de hacer lo que estaba haciendo antes, pero ahora utilizando HTTP2.

Saludos

Jacob G.:

Esto tomó un tiempo para completar así que incluso rompería el trabajo con hilos de manera que cada hilo trabajaría en alguna parte de la matriz parámetro.

Con Java 11 de HttpClient, esto es realmente muy fácil de lograr; todo lo que necesita es el siguiente fragmento:

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
          });
}

Este HTTP / 2 usos para enviar la solicitud de forma asíncrona y luego se encarga de la respuesta String(o Throwable) cuando se recibe en una devolución de llamada.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=173493&siteId=1
Recomendado
Clasificación