我正在开发一个使用HttpResponse进行网络调用的应用程序。
偶尔(大约30%的时间)网络调用似乎失败,502从服务器返回。检查服务器日志时,服务器似乎从未收到过请求。
然而,逻辑似乎并不坏,并且它在大多数情况下确实有效。我正在通过JSON与服务器通信。
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost( BASE_URL + endpoint )
...add json entity
method.addHeader( "content-type", "application/json" );
method.addHeader( "accept", "application/json" );
....调用下面的函数w client / method
protected HttpResponse invoke( HttpClient client, HttpUriRequest method ) throws ServiceException {
HttpResponse response = null;
try {
response = client.execute( method );
} catch ( //catch statements here ....)
int status = response.getStatusLine().getStatusCode();
//status = 502
}
这个呼叫失败的有趣之处在于它是跨设备的完全相同的呼叫,它所击中的服务器距离是20英尺,尽管它确实发生在另一个州的另一台服务器上。
我不明白为什么它有时会起作用而不是其他人。
答案 0 :(得分:2)
在发件人和收件人上运行wire shark。观察发送和接收。您应该能够看到问题的原因。
如果您收到502错误,则表示中间设备(代理,网络过滤器等)阻止或“吃掉”您的HTTP帖子。
答案 1 :(得分:0)
讨厌说出来,但这听起来像是一个基础设施问题。您的设备和服务器之间的某些网络问题。代码本身看起来很好