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()方法。
答案 0 :(得分:0)
这就是javadoc对connect()所说的内容:"如果尚未建立此类连接,则打开此URL引用的资源的通信链接。"
正确。
因此请求应该已发送。
Non sequitur。你的报价中没有关于发送请求的任何内容。
正如您所观察到的那样,请求将被缓冲,直到您执行某些输入步骤。