URL中的非法字符

时间:2014-11-02 17:22:06

标签: java url get

我收到错误" Illegal character in URL"在我的代码中,我不知道为什么: 我有一个令牌和一个字符串类型的哈希。

String currentURL = "http://platform.shopyourway.com" +
                    "/products/get-by-tag?tagId=220431" +
                    "&token=" + token +
                    "&hash=" + hash;
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
try {

     URL url = new URL(currentURL);
     urlConnection = (HttpURLConnection) url.openConnection();
     urlConnection.setRequestMethod("GET");
     urlConnection.connect();

[...]

但是当我写道:

URL url = new URL("http://platform.shopyourway.com/products/get-by-tag?tagId=220431&token=0_11800_253402300799_1_a9c1d19702ed3a5e873fd3b3bcae6f8e3f8b845c9686418768291042ad5709f1&hash=e68e41e4ea4ed16f4dbfb32668ed02b080bf1f2cbee64c2692ef510e7f7dc26b");

它的工作,但我不能写这个订单,因为我不知道哈希和令牌,因为我每次都会生成它们。 感谢。

1 个答案:

答案 0 :(得分:2)

Oracle docs on creating URLs你需要逃避"值"您的网址字符串。

  

包含特殊字符的网址

     

某些URL地址包含特殊字符,例如空格   字符。像这样:

     

http://example.com/hello世界/使这些角色合法化   需要在将它们传递给URL构造函数之前进行编码。

     

URL url = new URL("http://example.com/hello%20world");

     

在这个例子中编码特殊字符很容易   只有一个字符需要编码,但对于URL地址   有几个这样的字符,或者你在写作时不确定   您的代码需要访问哪些URL地址,您可以使用   java.net.URI类的多参数构造函数自动生成   为你处理编码。

     

URI uri = new URI("http", "example.com", "/hello world/", "");

     

然后将URI转换为URL。

     

URL url = uri.toURL();

还评论see this other post使用URLEncoder替换任何有问题的字符