HttpURLConnection连接方法无法连接
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()方法。
这就是javadoc关于connect()的说法:“如果这样的连接尚未建立,则打开通向此URL所引用资源的通信链接。”
正确。
所以请求应该已经发送。
非sequitur。关于发送请求,Thwre没有任何引用。
正如您所观察到的,请求被缓冲,直到您执行某个输入步骤。
谢谢。我刚刚发现有一个TCP握手建立了。其实我认为这是不必要的,因为TCP连接可能在服务器端超时。不管怎么说,还是要谢谢你。 – JAAAY
试过吗? http://stackoverflow.com/a/32897878/584420 –
@JamesJithin代理不是我的问题,因为正如帖子所说“如果我用connection.getResponseHeader()替换connection.connect(),连接建立并且请求正在抓取” – JAAAY