2017-02-08 3 views
1

J'ai un problème avec HttpClient vertx. Voici un code qui montre que les tests GET utilisent vertx et plain java.Vertx HttpClient getNow ne fonctionne pas

Vertx vertx = Vertx.vertx(); 
    HttpClientOptions options = new HttpClientOptions() 
      .setTrustAll(true) 
      .setSsl(false) 
      .setDefaultPort(80) 
      .setProtocolVersion(HttpVersion.HTTP_1_1) 
      .setLogActivity(true); 
    HttpClient client = vertx.createHttpClient(options); 

    client.getNow("google.com", "/", response -> { 
     System.out.println("Received response with status code " + response.statusCode()); 
    }); 
    System.out.println(getHTML("http://google.com")); 

Où getHTML() est d'ici: How do I do a HTTP GET in Java?

Ceci est ma sortie:

<!doctype html><html... etc <- correct output from plain java 
Feb 08, 2017 11:31:21 AM io.vertx.core.http.impl.HttpClientRequestImpl 
SEVERE: java.net.UnknownHostException: failed to resolve 'google.com'.  Exceeded max queries per resolve 3 

Mais VertX ne peut pas se connecter. Quel est le problème ici? Je n'utilise aucun proxy.

+1

Puissance liée à https://github.com/eclipse/vert.x/issues/1753. Pouvez-vous essayer avec Vert.x 3.4.0.Beta1? Cela devrait être corrigé dans cette version. En outre, vous pouvez revenir au résolveur JVM avec '-Dvertx.disableDnsResolver = true'. – tsegismont

+0

J'ai essayé à la fois 3.3.3 et 3.4.0.Beta1 et ça ne fonctionne pas. Je vais vérifier ce paramètre jvm. –

+1

-Dvertx.disableDnsResolver = true fonctionne :) Veuillez répondre à cette question (je l'accepte). –

Répondre

0

Voici l'exemple de code qui fonctionne pour moi.

public class TemplVerticle extends HttpVerticle { 

public static void main(String[] args) { 
    Vertx vertx = Vertx.vertx(); 

    // Create the web client and enable SSL/TLS with a trust store 
    WebClient client = WebClient.create(vertx, 
      new WebClientOptions() 
        .setSsl(true) 
        .setTrustAll(true) 
        .setDefaultPort(443) 
        .setKeepAlive(true) 
        .setDefaultHost("www.w3schools.com") 

    ); 


    client.get("www.w3schools.com") 

      .as(BodyCodec.string()) 
      .send(ar -> { 
       if (ar.succeeded()) { 
        HttpResponse<String> response = ar.result(); 
        System.out.println("Got HTTP response body"); 
        System.out.println(response.body().toString()); 

       } else { 
        ar.cause().printStackTrace(); 
       } 
      }); 
} 

}