Java: HTTP ПОМЕЩАЕТСЯ с HttpURLConnection

Как дела HTTP ПОМЕЩАЕТ? Класс, который я использую, кажется, думает, что делает ПОМЕЩЕННЫЙ, но конечная точка рассматривает его, как будто я сделал ПОЛУЧЕНИЕ. Я делаю что-то не так?

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>

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

7
задан Paul Tarjan 20 January 2010 в 07:34
поделиться

1 ответ

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

Править: Хорошо, для HTTPS это немного сложнее. Вы можете использовать Fiddler , если вы работаете в Windows, который является прокси - он может справиться с HTTPS, если вы можете убедить код клиента принять его сертификат, но это немного более навязчиво ... Прокси в том, как ясно меняется, как выглядит трафик.

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

5
ответ дан 7 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: