我想用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
失败。如果我用“test ..”替换"<html>"
,它可以正常工作。
修改
编码后接缝成为URL长度的问题,服务器除了这么长的URls之外没有。将其作为POST发送可以解决问题。
答案 0 :(得分:3)
首先尝试使用网址编码格式化您的html字符串。
String yourHtmlString = java.net.URLEncoder.encode("<html>....");
method.setQueryString(new NameValuePair[] {new NameValuePair("report", yourHtmlString)});
答案 1 :(得分:2)
我会使用base64编码,可能会在它之前进行某种压缩,具体取决于你给出的内容的长度:
RFC 2068声明: 服务器应该谨慎依赖于高于255字节的URI长度,因为某些较旧的客户端或代理实现可能无法正确支持这些长度。 URL长度的规范并未规定最小或最大URL长度,但实现因浏览器而异。在Windows上:Opera支持~4050个字符,IE 4.0+支持2083个字符,Netscape 3 - &gt; 4.78在关机时出现错误之前支持最多8192个字符,Netscape 6在启动错误之前支持~2000。
答案 2 :(得分:1)
HTML字符串包含应进行URL编码的字符。阅读here。
进行编码