我正在使用org.apache.http.client.methods.HttpPost将数据发送到经过验证的URL。我的客户在某些系统上工作,但在其他系我已经验证了我尝试从我的JAVA代码访问的URL可以使用Web浏览器从客户端系统访问。真正奇怪的是,当我查看Tomcat访问日志时,没有POST进入Tomcat的记录。
我在这一点上唯一的猜测是客户端系统正在使用某种类型的应用程序级防火墙。我还在调查这种可能性。
任何人都可以想到为什么我会在Tomcat 8访问日志中没有请求记录的情况下获得404响应的任何其他可能原因?
谢谢!
在我发布这个问题后约一个小时,我想出来了。我们的系统管理员更新了HTTP客户端尝试连接的DNS记录。 DNS更新指向未承载客户端尝试与之通信的Web应用程序的应用程序服务器。
虽然DNS记录无效,但他重新启动了所有HTTP客户端服务,当他们尝试连接到webapp时,客户端得到了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响应吗?