23

を使用してサーバーへの API 呼び出しを行いたいと考えていますHttpURLConnection。しかし、リクエストは成功せず、以下を返します:

<error>
  <http_status>400 Bad Request</http_status>
  <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message>
</error>

したがって、サーバーに送信されている「実際の」コンテンツが何であるかを確認したいと思います。実際のコンテンツとは、正確な HTTP リクエストを意味します。

どうすればこれを見ることができますか?

編集: ここでの最初の回答に基づいて、問題を明確にする必要があります: HTTP スニファーなどの外部プログラムの使用を避けたいのですが、探している情報を保持する関数やプロパティなどがあることを望んでいました。

そうでない場合、誰かがこの情報を手動で再構築できるかどうかを知っていますか (たとえば、getRequestMethod() などのいくつかの関数を呼び出すことによって)。

私はこの問題に頻繁に直面しているので、そのような機能を自分で構築する努力をする価値があります。方法を知る必要があります:)

4

4 に答える 4

14

java.logging を有効にすることで、HttpURLConnection をデバッグ モードにすることができます。

-Djava.util.logging.config.file=logging.properties

そしてlogging.properties(デフォルトではJRE_HOME\libにあります)に次のプロパティを入れます

sun.net.www.protocol.http.HttpURLConnection.level = ALL
于 2010-08-07T02:15:47.573 に答える
5

tcpdump は動作しますが、思いどおりに動作させるのは難しい場合があります。NetCat はよりユーザーフレンドリーです (プロジェクト ページは次のとおりです: http://netcat.sourceforge.net/ - ほとんどの Unix プラットフォームには既に含まれています)。

nc -l 9999

これは TCP ポート 9999 でリッスンし、HTTP クライアントが接続すると、リクエストの全文を出力します。

于 2010-08-07T01:03:21.140 に答える
0

コンピューターが送信または受信した実際のネットワーク パケットをダンプできる tcpdump などを使用します。

于 2010-08-06T23:04:13.970 に答える