2017-02-18 3 views
0
SocketAddress proxy = new InetSocketAddress("127.0.0.1", 8080); 
URL url = new URL("http://192.168.1.1/"); 

HttpURLConnection connection = (HttpURLConnection) url.openConnection(new Proxy(Proxy.Type.HTTP, proxy)); 
connection.setDoOutput(true); 
String body = "This is a body example"; 

OutputStreamWriter writer = new OutputStreamWriter(new BufferedOutputStream(connection.getOutputStream()), "8859_1"); 
writer.write(body); 
writer.flush(); 
writer.close(); 

connection.connect(); 

Проблема в том, что при запуске этого кода никакие запросы не «улавливаются» моим прокси (он хорошо настроен). Я знаю, что connect() является абстрактным методом в URLConnection, но при условии, что HttpURLConnection расширяет URLConnection, он должен переопределить его. Это то, что javadoc говорит о connect(): «Открывает ссылку на связь с ресурсом, на который ссылается этот URL-адрес, если такое соединение еще не установлено». Поэтому запрос должен быть отправлен. Кто-нибудь знает, что вызывает проблему?Метод подключения HttpURLConnection не удается подключить

ПРИМЕЧАНИЕ. Если я заменю connection.connect() с connection.getResponseHeader(), я улавлю запрос. Поскольку я прочитал в javadoc, если соединение еще не установлено, вызов getResponseHeader() вызовет неявно метод connect().

+0

Пробовал это? http://stackoverflow.com/a/32897878/584420 –

+0

@JamesJithin Proxy не является моей проблемой, потому что в сообщении говорится: «Если я заменил connection.connect() с connection.getResponseHeader(), соединение установит и запрос будет улавливаться» – JAAAY

ответ

0

Это то, что javadoc говорит о connect(): «Открывает ссылку для связи с ресурсом, на который ссылается этот URL-адрес, если такое соединение еще не установлено».

Исправить.

Таким образом, запрос должен быть отправлен.

Non sequitur. Threre ничего в вашей цитате о отправке запроса.

Как вы заметили, запрос буферизуется до тех пор, пока вы не выполните какой-либо шаг ввода.

+0

Спасибо. Я просто понял, что существует рукопожатие TCP, которое устанавливает. На самом деле Ι считают, что это является ненужным, потому что TCP-соединение может быть тайм-аутом на стороне сервера. Спасибо, в любом случае. – JAAAY

Смежные вопросы