Использование 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);