Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将HTML作为GET请求参数发送?_Java_Http_Encoding_Httpclient - Fatal编程技术网

Java 如何将HTML作为GET请求参数发送?

Java 如何将HTML作为GET请求参数发送?,java,http,encoding,httpclient,Java,Http,Encoding,Httpclient,我想通过Apaches HttpClient发送一个html字符串和一个GET请求,如下所示: http://sample.com/?html=<html><head>... http://sample.com/?html=... 这目前不起作用,我认为这是一个编码问题。你知道怎么做吗 method.setQueryString(new NameValuePair[] {new NameValuePair("report", "<html>....")})

我想通过Apaches HttpClient发送一个html字符串和一个GET请求,如下所示:

http://sample.com/?html=<html><head>...
http://sample.com/?html=...
这目前不起作用,我认为这是一个编码问题。你知道怎么做吗

method.setQueryString(new NameValuePair[] {new NameValuePair("report", "<html>....")});
client.executeMethod(method)
method.setQueryString(新的NameValuePair[]{new NameValuePair(“report”,“…”)});
client.executeMethod(方法)
此操作失败,原因是
org.apache.commons.httpclient.NoHttpResponseException:服务器本地主机未能响应
。如果我用“test..”替换
”,效果很好

编辑


这可能是编码后URL长度的问题,服务器除了这样长的URL之外没有其他功能。将其作为POST发送可以解决问题。

首先尝试使用URL编码格式化html字符串

String yourHtmlString = java.net.URLEncoder.encode("<html>....");
method.setQueryString(new NameValuePair[] {new NameValuePair("report", yourHtmlString)});
String yourHtmlString=java.net.URLEncoder.encode(“…”);
setQueryString(newNameValuePair[]{newNameValuePair(“report”,yourHtmlString)});

首先尝试使用URL编码格式化html字符串

String yourHtmlString = java.net.URLEncoder.encode("<html>....");
method.setQueryString(new NameValuePair[] {new NameValuePair("report", yourHtmlString)});
String yourHtmlString=java.net.URLEncoder.encode(“…”);
setQueryString(newNameValuePair[]{newNameValuePair(“report”,yourHtmlString)});

HTML字符串包含应采用URL编码的字符。阅读


您可以使用HTML字符串进行编码,该字符串包含应进行URL编码的字符。阅读


您可以使用

进行编码。我会使用base64编码,根据给定内容的长度,在编码之前可能会进行某种压缩:

RFC 2068规定: 服务器在依赖超过255字节的URI长度时应该谨慎,因为一些较旧的客户端或代理实现可能无法正确支持这些长度。
URL长度的规范并没有规定URL的最小或最大长度,但具体实现因浏览器而异。在Windows上:Opera支持大约4050个字符,IE 4.0+支持2083个字符,Netscape 3->4.78支持最多8192个字符,在关机时出错,Netscape 6支持大约2000个字符,在启动时出错

我会选择base64编码,根据给定内容的长度,可能会先进行某种压缩:

RFC 2068规定: 服务器在依赖超过255字节的URI长度时应该谨慎,因为一些较旧的客户端或代理实现可能无法正确支持这些长度。
URL长度的规范并没有规定URL的最小或最大长度,但具体实现因浏览器而异。在Windows上:Opera支持大约4050个字符,IE 4.0+支持2083个字符,Netscape 3->4.78支持最多8192个字符,在关机时出错,Netscape 6支持大约2000个字符,在启动时出错

谢谢。现在字符串看起来已编码,但服务器不响应它。在浏览器中手动尝试同样的操作不起任何作用。Web服务器中是否有常见的url长度限制?@Mork0075 HTTP规范没有提到长度限制,但如果您稍微搜索一下,您会发现浏览器和服务器实现施加了不同的长度限制,我做了一些delta调试,将字符串裁剪到大约2000个字符后,它就可以工作了。但我想在服务器上存储信息,这超出了这个范围。你有什么想法吗?解决了,用帖子发送就行了。谢谢因为你正在有效地提交信息(即更改服务器),所以无论如何你都应该使用POST。谢谢。现在字符串看起来已编码,但服务器不响应它。在浏览器中手动尝试同样的操作不起任何作用。Web服务器中是否有常见的url长度限制?@Mork0075 HTTP规范没有提到长度限制,但如果您稍微搜索一下,您会发现浏览器和服务器实现施加了不同的长度限制,我做了一些delta调试,将字符串裁剪到大约2000个字符后,它就可以工作了。但我想在服务器上存储信息,这超出了这个范围。你有什么想法吗?解决了,用帖子发送就行了。谢谢,因为您正在有效地提交信息(即对服务器进行更改),所以无论如何您都应该使用POST。