我收到错误" 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");
它的工作,但我不能写这个订单,因为我不知道哈希和令牌,因为我每次都会生成它们。 感谢。
答案 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替换任何有问题的字符