HttpResponse返回502错误,似乎没有命中端点

时间:2011-06-20 22:38:59

标签: java android

我正在开发一个使用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英尺,尽管它确实发生在另一个州的另一台服务器上。

我不明白为什么它有时会起作用而不是其他人。

2 个答案:

答案 0 :(得分:2)

在发件人和收件人上运行wire shark。观察发送和接收。您应该能够看到问题的原因。

如果您收到502错误,则表示中间设备(代理,网络过滤器等)阻止或“吃掉”您的HTTP帖子。

答案 1 :(得分:0)

讨厌说出来,但这听起来像是一个基础设施问题。您的设备和服务器之间的某些网络问题。代码本身看起来很好