如何修复HTTP 504网关超时异常

问题描述 投票:-2回答:1

我正在尝试向另一个API发出GET请求以获取json响应。

当我使用下面的代码发出请求时,我收到HTTP 504错误(网关超时错误)。

但是,当我通过rest client工具尝试该请求时,该请求不会引发任何错误。

如何增加代码中的时间间隔以避免超时错误?

这是通话的样子:

HttpClient httpClient = getBasicAuthDefaultHttpClient();
String url= "http://XXXXX";
HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("id", id);
httpGet.addHeader("secret", secret);
httpGet.addHeader("network_val", networkval);

HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();

if (entity != null && response.getStatusLine().getStatusCode() == HttpStatus.OK.value()) {
    ObjectMapper objectMapper = new ObjectMapper();
    restInfo = objectMapper.readValue(entity.getContent(), MyClass.class);
} else {
    logger.error("Call to API failed: response code = {}", response.getStatusLine().getStatusCode());
}

请注意:

这可能与'https'有关吗?

[当我通过Insomnia REST Client使用'http'尝试时,出现错误:错误:从对等方接收数据时失败。https正常运行,没有任何错误(https://XXXXX

java http http-headers http-status-code-504
1个回答
0
投票

这是我尝试过的。

public HttpClient getBasicAuthDefaultHttpClient() {
    CredentialsProvider provider = new BasicCredentialsProvider();
    UsernamePasswordCredentials creds = new UsernamePasswordCredentials(user, 
    password);
    provider.setCredentials(AuthScope.ANY, creds);

    //Fix to avoid HTTP 504 ERROR (GATEWAY TIME OUT ERROR)
    RequestConfig.Builder requestBuilder = RequestConfig.custom();
    requestBuilder.setConnectTimeout(30 * 1000);
    requestBuilder.setConnectionRequestTimeout(30 * 1000);

    HttpClientBuilder builder = HttpClientBuilder.create();
    builder.setDefaultRequestConfig(requestBuilder.build());
    builder.setDefaultCredentialsProvider(provider).build();

    return builder.build();
}
© www.soinside.com 2019 - 2024. All rights reserved.