2016-11-02 8 views
1

3.3 et j'essaie d'effectuer un appel api de repos de manière asynchrone. pour cela, j'essaie d'utiliser httpClient, `final HttpClient httpClient = vertx.createHttpClient();Vertx clientHttp: Connexion fermée lorsque l'appel de repos

 new HttpGet(uri); 

     httpClient.requestAbs(apiMethod.getHttpMethod(), uri, resultHandler -> { 
      resultHandler.statusCode(); 
      if (resultHandler.statusCode() == 200) { 
       environment.setStatus(ApiStatus.OK); 
       apiMethod.setStatus(ApiStatus.OK); 
      } else { 
       environment.setStatus(ApiStatus.ERROR); 
       apiMethod.setStatus(ApiStatus.ERROR); 
      } 
      resultHandler.bodyHandler(buffer -> { 
       logger.debug("Output from Server .... \n"); 
       buffer.toString(); 
      }); 
     }).exceptionHandler(handlerExc -> { 
      logger.error(" handle exception:" + handlerExc.getMessage(), handlerExc.getCause()); 
      apiMethod.setStatus(ApiStatus.ERROR); 
      environment.setStatus(ApiStatus.ERROR); 
      apiMethod.setCallingResult(handlerExc.getMessage()); 

     }).putHeader("content-type", "application/json").end();` 

Je reçois toujours l'erreur: La connexion a été fermée. quand je boucle la demande ou utilise mon navigateur/facteur ça fonctionne bien. quelqu'un peut-il avoir une idée de l'endroit où je me trompe? est-ce un problème de réseau? Meilleures salutations,

Répondre

1

voici le code complet

final HttpClientOptions options = new HttpClientOptions(); 
    options.setTrustAll(true); 
    final String proxyUrl = "yourProxyUrl.net"; 
    options.setSsl(true); 
    int port = 443; 
    final ProxyOptions proxyOptions = new ProxyOptions().setHost(proxyUrl).setPort(port); 
    options.setProxyOptions(proxyOptions); 
    options.setDefaultPort(port); 
    HttpClient httpClient= vertx.createHttpClient(options); 

    httpClient.requestAbs(apiMethod.getHttpMethod(), uri, resultHandler -> { 
     resultHandler.statusCode(); 
     if (resultHandler.statusCode() == 200) { 
      environment.setStatus(ApiStatus.OK); 
      apiMethod.setStatus(ApiStatus.OK); 
     } else { 
      environment.setStatus(ApiStatus.ERROR); 
      apiMethod.setStatus(ApiStatus.ERROR); 
     } 
     resultHandler.bodyHandler(buffer -> { 
      logger.debug("Output from Server .... \n"); 
      buffer.toString(); 
     }); 
    }).exceptionHandler(handlerExc -> { 
     logger.error(" handle exception:" + handlerExc.getMessage(), handlerExc.getCause()); 
     apiMethod.setStatus(ApiStatus.ERROR); 
     environment.setStatus(ApiStatus.ERROR); 
     apiMethod.setCallingResult(handlerExc.getMessage()); 

    }).putHeader("content-type", "application/json").end(); 
1

J'essaie juste derrière le proxy, et je reçois une autre erreur, qui me conduit à ajouter cette ligne if (url.getProtocol().equals("https")) { options.setDefaultHost(host); options.setSsl(true); port = 443; } final ProxyOptions proxyOptions = new ProxyOptions().setHost(proxyUrl).setPort(443); options.setProxyOptions(proxyOptions); options.setDefaultPort(port); logger.debug("execution appel"); final HttpClient httpClient = vertx.createHttpClient(options); je suis derrière un proxy d'entreprise, si vous avez des problèmes avec proxy, trouver votre URL proxy et port pour le mettre

+0

post, s'il vous plaît, le code complet. –