7

HTTP PUT はどのように行うのですか? 私が使用しているクラスは、PUT を実行していると考えているようですが、エンドポイントは GET を実行したかのように処理しています。私は何か間違ったことをしていますか?

URL url = new URL("https://...");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");

OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

writer.write(xmlString);
writer.close();

System.out.println(conn.getRequestMethod());
String response = readInputStream(conn.getInputStream());
System.out.println(response);

どちらが印刷されていますか:

PUT
<same content as doing a GET>

これが機能する場合は、別のライブラリを含めたくありません...

4

1 に答える 1

5

簡単に調べる方法が 1 つあります。Wiresharkを実行して、ネットワーク上で実際に何が起こっているかを確認することです。この種の問題を診断する最も信頼できる方法であることがわかりました。クライアントにバグがあり、ライブラリにバグがあり、サーバーにバグがある可能性がありますが、Wireshark は実際に何が起こっているかを示します。

編集: わかりました、HTTPS の場合は少しトリッキーです。プロキシであるWindowsで実行している場合は、 Fiddlerを使用できます-クライアントコードに証明書を受け入れるように説得できればHTTPSに対応できますが、それはもう少し邪魔です...プロキシを明らかに邪魔にしますトラフィックがどのように見えるかを変更します。

代わりに、HTTP を介してサーバーのデバッグ バージョンと通信できるとよいでしょう。あなたの場合、それは実現可能ですか、それともサーバーは完全にあなたの制御外ですか?

于 2010-01-20T07:10:50.450 に答える