代码之家  ›  专栏  ›  技术社区  ›  Hirnhamster

Java:在发送之前显示一个HTTURL连接请求

  •  20
  • Hirnhamster  · 技术社区  · 14 年前

    我想使用 HttpURLConnection . 但是请求没有成功,返回:

    <error>
      <http_status>400 Bad Request</http_status>
      <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message>
    </error>
    

    所以我想检查一下发送到服务器的“真实”内容是什么。我指的是真正的内容,确切的HTTP请求。

    你知道我怎么看这个吗?

    编辑: 基于这里的第一个答案,我应该澄清我的问题:我想避免使用HTTP嗅探器之类的外部程序,我希望有一个函数、一个属性或者任何保存我正在寻找的信息的东西。

    如果不是这样,是否有人知道可以手动重建此信息(例如通过调用getRequestMethod()等多个函数)

    我经常遇到这个问题,因此值得自己努力构建这样的功能。只需要知道怎么做:)

    3 回复  |  直到 9 年前
        1
  •  14
  •   RealHowTo    14 年前

    通过启用java.logging,可以将httpurlconnection置于调试模式。

    -Djava.util.logging.config.file=logging.properties
    

    并将以下属性放入logging.properties(默认情况下在jre_home\lib中)

    sun.net.www.protocol.http.HttpURLConnection.level = ALL
    
        2
  •  5
  •   Mike Baranczak    14 年前

    tcpdump可以工作,但是很难让它做你想做的。Netcat更加用户友好(以下是项目页面: http://netcat.sourceforge.net/ -大多数Unix平台已经包含了它)。

    nc -l 9999
    

    这将监听TCP端口9999,当HTTP客户端连接时,它将打印出请求的全文。

        3
  •  0
  •   Tassos Bassoukos    14 年前

    使用类似tcpdump的方法,它可以转储计算机发出或接收的实际网络数据包。