Java调试一个 HttpURLConnection 问题

以这个例子为例。

import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;

public class HttpConnect {
    public static void main(String[] args) throws Exception {
      URL url = new URL("http://www.rgagnon.com/howto.html");
      URLConnection con = url.openConnection();
      Reader reader = new InputStreamReader(con.getInputStream());
      while (true) {
        int ch = reader.read();
        if (ch==-1) {
          break;
        }
        System.out.print((char)ch);
      }
    }
}

上面的代码片段读取 HTML 页面并将其转储到控制台。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD>
<!-- developpe par  Real Gagnon, Quebec Canada -->
<LINK REL="SHORTCUT ICON" HREF="http://www.rgagnon.com/favicon.ico">
<META NAME="description"
      Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets">
<META NAME="keywords"
      Content="java,javascript,wsh,vbscript,how-to,powerbuilder">
<LINK title="mystyle" href="howto.css" type="text/css" rel="stylesheet">
...

为了跟踪 HTTP 协议级别发生的事情,我们可以在调试模式下切换 HttpURLConnection/UrlConnection。

您必须在启动 JVM 时通过设置特殊属性来启用 java-logging 机制:

java.exe -Djava.util.logging.config.file=logging.properties HttpConnect

并将以下属性放入 logging.properties 文件(默认在 JRE_HOME\lib 中)

sun.net.www.protocol.http.HttpURLConnection.level = ALL

注意:
如果从 Eclipse 运行,则通过运行配置对话框 -> 参数选项卡 -> VM 参数文本区域 放置-Djava.util.logging...。

结果是:

2010-08-07 00:00:31 sun.net.www.protocol.http.HttpURLConnection writeRequests
FIN: sun.net.www.MessageHeader@16caf435 pairs: {GET /howto.html HTTP/1.1: null}{User-Agent: Java/1.6.0_20}{Host: www.rgagnon.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}
2010-08-07 00:00:31 sun.net.www.protocol.http.HttpURLConnection getInputStream
FIN: sun.net.www.MessageHeader@5ac0728 pairs: {null: HTTP/1.1 200 OK}{Date: Sat, 07 Aug 2010 04:00:33 GMT}{Server: Apache}{Accept-Ranges: bytes}{Content-Length: 17912}{Keep-Alive: timeout=5, max=64}{Connection: Keep-Alive}{Content-Type: text/html}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD>
<!-- developpe par  Real Gagnon, Quebec Canada -->
<LINK REL="SHORTCUT ICON" HREF="http://www.rgagnon.com/favicon.ico">
<META NAME="description"
      Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets">
...

要调试 JAX-WS 请求/响应,请参阅此操作方法:为 JAX-WS 启用日志记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值