Использование Apache HTTPClient - как увидеть исходную строку запроса перед отправкой?

В целях отладки, я хотел бы увидеть необработанный запрос, который будет отправлен. Есть ли способ получить это без монитора HTTP непосредственно из API HttpPost или HttpClient?

Я нашел несколько "почти" повторяющихся вопросов, но не для этого конкретного

Ответы

Ответ 1

Вы можете установить некоторые переменные среды для Apache HttpClient (пример проверен на 4.3.2).

System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.wire", "DEBUG");

Есть также несколько переменных для отладки:

System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.conn", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.client", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.client", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "DEBUG");

Ответ 2

org.apache.http.client.fluent.Request#viaProxy 

Этот метод может сделать ваш запрос пройденным через прокси-сервер, поэтому вы можете запустить локальный прокси-сервер, например Fiddler, поэтому этот прокси-сервер отладки может отображать подробности запроса и ответа http.

Ответ 3

Попробуйте следующее:

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);

method.setParameter(...., ....);

для получения URI

System.out.println("getUri: " + method.getURI());

для получения параметров в POST

method.getRequestEntity().writeRequest(System.out);