2016-03-01 178 views
0

这是我使用的连接到URL的代码,它的工作正常,但我想要字符串中的http请求,我想知道实际上发送到服务器的是什么如何在java中打印http请求作为字符串

HttpURLConnection conn = null; 
       try { 
       URL url = new URI(baseURL).toURL(); 
       conn = (HttpURLConnection) url.openConnection(); 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("User-Agent", "Mozilla/5.0"); 
       conn.setRequestProperty("Content-Type", 
         "application/x-www-form-urlencoded"); 

       conn.setRequestProperty("Content-Length", Integer.toString(builder.toString().length())); 
       conn.setConnectTimeout(10000); 

       conn.setReadTimeout(10000); 
       conn.setUseCaches(false); 

       OutputStream outputStream = new BufferedOutputStream(conn.getOutputStream());` 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(outputStream, "UTF-8")); 
       writer.write(builder.toString()); 
       writer.flush(); 
       writer.close(); 
       outputStream.close(); 
       conn.connect(); 
       requestStatusCode = conn.getResponseCode(); 
      } 

我想什么是真正被发送到服务器

+0

是否要检查使用的URL或所有http params? – NAIT

+0

我想检查用户代理,主机和 – Ashwa

+0

如何打印一个http请求作为字符串,然后提供给我输出 – Ashwa

回答

1

考虑使用代理服务器,而不是打印出来,查看正在发送的请求 - (有一个很好的教程here),并正在从送什么回服务器。

还要考虑使用库,例如​​VolleyOKHttp联网,而不是做手工 - 这两个库被广泛使用并得到广泛支持#2等

1

您可以使用getHeaderField(int n)文档打印头字段超过here,在循环中使用它,你会得到所有的标题。 另一种方式可以通过像Wireshark这样的http分析器来完成。

1

我的事情,你需要这样的代码:

Enumeration<Sting> paramNames =req.getParametersNames(); 
    while(parametersNames.hasMoreElements()) { 
    String name = parametersNames.nextElement(); 
    System.out.println(req.getParamter(name); 
    }