Java: HTTP PUT с HttpURLConnection - PullRequest
       19

Java: HTTP PUT с HttpURLConnection

7 голосов
/ 20 января 2010

Как вы делаете 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>

Я бы предпочел не включать другую библиотеку, если эта может работать ...

1 Ответ

5 голосов
/ 20 января 2010

Есть один простой способ выяснить: запустите Wireshark и посмотрите, что на самом деле происходит в сети.Я обнаружил, что это самый надежный способ диагностики такого рода проблем - у вашего клиента могут быть ошибки, в библиотеке могут быть ошибки, на сервере могут быть ошибки, но Wireshark покажет вам, что на самом деле происходит.

РЕДАКТИРОВАТЬ: Хорошо, для HTTPS это немного сложнее.Вы можете использовать Fiddler , если вы работаете в Windows, которая является прокси - она ​​может справиться с HTTPS, если вы можете убедить свой клиентский код принять его сертификат, но это немного более навязчиво ...прокси таким образом явно меняет внешний вид трафика.

Было бы лучше, если бы вместо этого вы могли общаться с отладочной версией сервера по HTTP.Это возможно в вашем случае, или сервер полностью вне вашего контроля?

...