3.3我尝试以异步方式执行rest api调用。因为那个我'尝试使用httpClient,`final HttpClient httpClient = vertx.createHttpClient();
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();`
我仍然收到错误:连接已关闭。 当我卷曲请求或使用我的浏览器/邮递员它工作正常。 任何人都可以知道我错在哪里?这是网络问题吗? 最好的问候,
答案 0 :(得分:1)
我只是在代理后面尝试,我收到另一个错误,导致我添加此行
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);
我在公司代理服务器后面,如果您遇到代理问题,请找到您的代理网址和端口进行设置
答案 1 :(得分:1)
这里是完整的代码
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();