我有这样的代码:
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)。
答案 0 :(得分:-1)
您需要使用java.net.URI类对您的URL进行编码,而不是自己处理它。谢: HTTP URL Address Encoding in Java
答案 1 :(得分:-1)
您可以使用以下代码 URLEncoder.encode(“中文”,“utf-8”)