簡體   English   中英

如何將HTML作為GET-Request參數發送?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM