HttpURLConnection连接方法无法连接

时间:2017-02-18 17:54:57

标签: java http httpurlconnection urlconnection

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引用的资源的通信链接。"所以请求应该已经发送。有人知道导致问题的原因吗?

注意:如果我用connection.getResponseHeader()替换connection.connect(),我会捕获一个请求。正如我在javadoc中读到的那样,如果没有设置连接,则调用getResponseHeader()将隐式调用connect()方法。

1 个答案:

答案 0 :(得分:0)

  

这就是javadoc对connect()所说的内容:"如果尚未建立此类连接,则打开此URL引用的资源的通信链接。"

正确。

  

因此请求应该已发送。

Non sequitur。你的报价中没有关于发送请求的任何内容。

正如您所观察到的那样,请求将被缓冲,直到您执行某些输入步骤。