2014-10-29 25 views
0

所以我遇到了一個問題,服務支持問我用HTML支持他們。 所以我需要得到由HTTPClient和PostMethod

HttpClient client = new HttpClient(); 
PostMethod post = new PostMethod("https://www.url.to/post-to"); 
NameValuePair[] params = { 
       new NameValuePair("NAME", name), 
       new NameValuePair("EMAIL", email), 
for(NameValuePair param : params){ 
    post.setParameter(param.getName(), param.getValue()); 
} 

產生是否有可能得到它的HTML或獲取發送作爲字符串的要求,所有的標題等相當於HTML?

回答

1

如果您使用一些日誌框架,Apache HttpClient可以配置爲記錄通過它的請求和響應,請參閱Wire logging。通過文檔來看,如果日誌框架是正確設置,這應該足以使它

System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog"); 

System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true"); 

System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", "debug"); 

System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "debug"); 

編輯

這些設置都OK,如果你使用Apache Commons Logging的日誌框架。上面提到的鏈接還包含用於設置log4jjava.util.logging的示例。

0

您可以編寫一個等效的HTML表單,它將相同的兩個參數發送到同一個URL。

但是,如果您打開由此連接導致的問題的支持憑單,則HTML可能不會非常有用,因爲即使請求主體相同,瀏覽器可能會向URL發送不同的標頭。

您可以使用post.getRequestHeaders()post變量中獲取請求標題。它將返回一個類型爲Header[]的數組,您必須將其轉換爲字符串。通過對值進行urlen編碼,消息正文可能很容易從參數中重建。身體總是在NAME=urlencodedname&EMAIL=urlencodedemail的形式。