504使用Java HttpClient时网关超时
我有一个通过POST调用的HTTP监听服务。使用诸如504使用Java HttpClient时网关超时,java,apache-httpclient-4.x,java-http-client,Java,Apache Httpclient 4.x,Java Http Client,我有一个通过POST调用的HTTP监听服务。使用诸如curl、邮递员等软件,请求成功(状态代码200) 我需要从Java使用这个服务。但是使用Java11的本机,我得到一个504网关超时 HttpClient=HttpClient.newHttpClient(); HttpRequest请求=HttpRequest.newBuilder()。 标题(“内容类型”、“应用程序/json”)。 uri(uri.create(service\uURL))。 POST(HttpRequest.bodyp
curl
、邮递员等软件,请求成功(状态代码200)
我需要从Java使用这个服务。但是使用Java11的本机,我得到一个504网关超时
HttpClient=HttpClient.newHttpClient();
HttpRequest请求=HttpRequest.newBuilder()。
标题(“内容类型”、“应用程序/json”)。
uri(uri.create(service\uURL))。
POST(HttpRequest.bodypublisher.ofString(json_string)).build();
HttpResponse res=client.send(请求,HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode());//504
尝试使用Apache HttpClient库时,调用成功:
StringEntity requestEntity=新建StringEntity(
json(字符串,ContentType.APPLICATION(json));
CloseableHttpClient httpclient=HttpClients.createDefault();
HttpPost HttpPost=新的HttpPost(服务url);
httpPost.setEntity(requestEntity);
CloseableHttpResponse res=httpclient.execute(httpPost);
System.out.println(res.getStatusLine().getStatusCode())//200
为什么它不能与Java native
HttpClient
一起使用?调用之间有什么区别?问题可能不是库或请求本身,而是防火墙、服务器连接、dns问题或web服务器问题。使用此Http客户端向您的任何其他服务请求是否成功?@edward_wong是的,使用Java HttpClient请求其他服务确实可以。这就是为什么我不知道这里的问题是什么,只有此服务失败,而且只有Java HttpClient。您可以尝试打开日志记录-Djdk.HttpClient.HttpClient.log=头、请求、错误
-这可能会揭示一些问题…问题可能不在于库或请求本身,而在于防火墙、服务器连接,dns问题或web服务器问题。使用此Http客户端向您的任何其他服务请求是否成功?@edward_wong是的,使用Java HttpClient请求其他服务确实可以。这就是为什么我不知道这里的问题是什么,只有此服务失败,并且只有Java HttpClient。您可以尝试打开日志记录-Djdk.HttpClient.HttpClient.log=头、请求、错误
-这可能会泄露一些信息。。。