[英]How to send HTML as GET-Request parameter?
我想使用Apaches HttpClient發送帶有GET請求的html字符串:
http://sample.com/?html=<html><head>...
目前這行不通,我認為它是編碼問題。 你有什么想法怎么做?
method.setQueryString(new NameValuePair[] {new NameValuePair("report", "<html>....")});
client.executeMethod(method)
由於org.apache.commons.httpclient.NoHttpResponseException: The server localhost failed to respond
失敗org.apache.commons.httpclient.NoHttpResponseException: The server localhost failed to respond
。 如果我將"<html>"
替換為“ test ..”,則工作正常。
編輯
編碼后似乎是URL長度的問題,服務器沒有這么長的URls。 將其作為POST發送即可解決問題。
嘗試先使用URL編碼來格式化html字符串。
String yourHtmlString = java.net.URLEncoder.encode("<html>....");
method.setQueryString(new NameValuePair[] {new NameValuePair("report", yourHtmlString)});
我會使用base64編碼,然后再進行某種壓縮,具體取決於給定內容的長度:
RFC 2068指出:服務器應謹慎對待,取決於255個字節以上的URI長度,因為某些較舊的客戶端或代理實現可能無法正確支持這些長度。 URL長度規范不規定最小或最大URL長度,但是實現方式因瀏覽器而異。 在Windows上:Opera支持約4050個字符,IE 4.0+恰好支持2083個字符,Netscape 3-> 4.78支持多達8192個字符,然后才導致關閉錯誤,而Netscape 6支持〜2000則導致啟動錯誤。
HTML字符串包含應進行URL編碼的字符。 在這里閱讀。
您可以使用UrlUtils.simpleFormUrlEncode進行編碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.