2016-03-01 70 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); 
    }