1

次のコードを使用して、クライアント側アプリからWebサイトと通信しています。何らかの理由で、常にステータスコード503が返されます。ただし、ブラウザーからサイトを手動でロードすると、findがロードされるだけです。コードに何か問題がある可能性がありますか?または、この問題を引き起こす可能性のあるサーバー側の特別な設定はありますか?

        // the head method
        httphead = new HttpHead(url);
        httphead.getParams().setParameter("http.socket.timeout", this.socketTimeout);
        httphead.getParams().setParameter("http.protocol.cookie-policy", CookiePolicy.IGNORE_COOKIES);

        HttpResponse response = this.httpClient.execute(httphead);
        statusCode = response.getStatusLine().getStatusCode();
4

2 に答える 2

1

まず、tcpdump(またはWindowsではwinpcap)を使用してパケットダンプを取得します。次に、2つのリクエストがどのように異なるかを正確に確認できます。それでも問題がわからない場合は、ここに違いを投稿してください。

tcpdump -n -s 1000 -A port 80 and host {hostname}
于 2012-12-17T22:57:48.147 に答える
0

これは、さまざまな原因によるものです。基本的に、あなたはあなた自身の調査をする必要があるでしょう:

  • 実際に正しいURLを使用していることを確認してください...

  • サーバー側のログを確認してください。

  • ブラウザとサービスの間にプロキシまたはリバースプロキシがある場合は、リクエストがどこまで到達するかを確認してください...

  • 要求メッセージと応答メッセージをキャプチャして(機能する場合と機能しない場合)、違いを理解してください。

  • 動作中の(ブラウザ)ケースをHttpClientライブラリで再現してみてください。つまり、同じURLと同じヘッダーでGETを実行します。

  • 等々 ...

于 2012-12-17T23:12:09.063 に答える