我正在使用org.apache.http.client.methods.HttpPost将数据发送到经过验证的URL。我的客户可以在某些系统上工作,而不能在其他系统上工作。我已经验证了我尝试通过JAVA代码访问的URL可以使用Web浏览器从客户端系统访问。真正奇怪的是,当我查看Tomcat访问日志时,没有POST记录进入Tomcat的记录。
我目前唯一的猜测是客户端系统正在使用某种类型的应用程序级防火墙。我仍在研究这种可能性。
有人能想到我在Tomcat 8访问日志中没有记录请求的情况下得到404响应的任何其他可能原因吗?
谢谢!
最佳答案
发布此问题大约一个小时后,我就知道了。我们的系统管理员更新了HTTP客户端尝试连接的DNS记录。 DNS更新指向未托管客户端尝试与之通信的webapp的应用程序服务器。
DNS记录无效时,他重新启动了所有HTTP客户端服务,当它们尝试连接到Web应用程序时,客户端收到404响应。
一旦我弄清楚了DNS记录有问题,然后让他更正了我们开始看到有问题的主题时的IP。
事实证明,当HTTPClient收到404响应时,它不再尝试绑定到URL,直到重新启动客户端服务或创建新的HTTPClient实例为止。
这是我的客户代码...
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("UN", "PW"));
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build();
有人可以向我提供示例代码来强制org.apache.http.client.HttpClient进行资源检查,尽管之前有404响应吗?