2011-06-20 5 views
1

私は、ネットワークコール用にHttpResponseを使用するアプリケーションで作業しています。HttpResponseが502エラーを返し、エンドポイントにヒットしないようです。

時々(約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"); 

....この呼び出しが失敗についての興味深い事は、それはデバイス間でまったく同じコールだということであり、それは当たっていますサーバが20フィートであるクライアント/方法

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 
} 

関数w下に呼び出します別の状態にある別のサーバーで発生します。

私はそれが時々動作する理由はわかりませんが、他のものは見えません。

答えて

2

送信者と受信者の両方でRun Wire Shark送受信を観察する。あなたは問題の原因を見ることができるはずです。

502エラーが発生した場合、中間デバイス(プロキシ、Webフィルタなど)がHTTPポストをブロックしているか、「食べている」ことを示唆しています。

+0

wiresharkを実行すると、サーバーが502を送り返していることがわかりました。考えてくれてありがとう、私は今より大きな問題があるように見える:/ –

+0

だから、502はあなたのサーバーから来ているので、Webサーバーのログはその要求に対して何を言っているのですか?受信したリクエストをwiresharkで監視し、すべての要素(ヘッダーとコンテンツ)を確認して説明を求めます。私はスイッチがヘッダーをマングルするのを見ました。また、DevBoxをサーバーに直接接続することもできます(中間の問題は除外されます) – stimpy

0

嫌いですが、これはインフラストラクチャの問題のように聞こえるだけです。お使いのデバイスとサーバーとの間のネットワーキングの問題。コード自体はうまく見えます

関連する問題