URL中的HttpURLConnection和编码字符

时间:2012-02-20 14:56:26

标签: java httpurlconnection

我有这样的代码:

URL url = new URL("http://foo.com/?param=paj%E9");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
...

但是,似乎openConnection正在压制网址的“%E9”部分,服务器最终会收到请求http://foo.com?param=paj

我是否忘记应用任何不同的设置才能正常工作?

谢谢!

编辑:网址“http://foo.com/?param=paj%E9”已经编码(来自http://foo.com/?param =pajé),这应该是服务器应该收到的请求。如果我尝试直接从浏览器访问http://foo.com/?param=paj%E9,它会按预期工作。如果我URLncode“paj%E9”,我将对该参数进行双重编码,并且服务器在解码该值时会看到“paj%E9”而不是“pajé”。 我实际上是在尝试构建一个代理,因此我收到了已编码的网址。问题是每当我使用HttpURLConnection传递这样的编码参数时,它就会忽略编码部分(如%E9)。

2 个答案:

答案 0 :(得分:-1)

您需要使用java.net.URI类对您的URL进行编码,而不是自己处理它。谢: HTTP URL Address Encoding in Java

答案 1 :(得分:-1)

您可以使用以下代码 URLEncoder.encode(“中文”,“utf-8”)