java - 通过httpclient访问云服务器时出现UnknownHostException,但在chrome浏览器上工作正常
问题描述
我正在开发一个测试工具,它可以将 api 直接发送到服务器并验证其响应。在将应用程序移动到远程云服务器之前,它工作正常。
我在我的工具中使用 apache httpclient,如下所示。
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
get.setHeader("Content-Type", "application/json");
HttpResponse response = client.execute(get);
现在我得到
java.net.UnknownHostException: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server ("server url")
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:112)
at org.apache.http.impl.conn.BasicHttpClientConnectionManager.connect(BasicHttpClientConnectionManager.java:325)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at RESTAPI.HttpClientTester.main(HttpClientTester.java:62)
在将 preferipv4 设置为 true 后,我得到了同样的错误。
System.setProperty("java.net.preferIPv4Stack" , "true");
我很困惑,因为它在 chrome 浏览器和 SOAP UI 工具上运行良好。我已经挖掘了 3 天,并搜索了所有相关的问题/文章。仍然无法解决。我做错了什么?任何帮助,将不胜感激。
解决方案
推荐阅读
- python - 在 python 中创建轮盘赌模拟器
- c# - HttpContext.Current.Session 在调用 Web 方法时抛出了 System.NullReferenceException 类型的异常
- r - 卡住 - 按分组排序
- c# - 验证从 1 开始的正整数的 id 路由参数
- hadoop - HADOOP:无法运行 hdfs namenoe -format
- powershell - 将值传递给powershell脚本中的函数
- docker - 如何在使用 docker 安装的 kong 中添加社区插件
- wpf - 为什么 uwp 应用程序需要很长时间才能启动?
- ios - Swift:使用 DispatchQueue.global (qos: .userInitiated) .asyncAfter 重复返回的结果
- tensorflow - 如何使用 Tensorflow 获得数组的所有元素与同一数组中的所有其他元素的余弦相似度