我正在使用 ApacheHttpClient v4.2.2
尝试点击一个 URL,并且得到一个URISyntaxException
我似乎无法弄清楚的:
try {
String uri = "http://a.example.com/12/allrigh/bouncer?my_key1=i[(Gz$xrCcCeaCrHv}[5Ryou4kz@Yh~c@K_if-p7vGQ3ZF[fEpm2SmH(Z6Yh40Ea";
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(uri);
HttpResponse response = httpClient.execute(httpGet);
} catch(Throwable throwable) {
// Log & handle
}
Exception in thread "main" java.lang.IllegalArgumentException
at java.net.URI.create(URI.java:859)
at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:69)
...
Caused by: java.net.URISyntaxException: Illegal character in query at index 65: http://a.example.com/12/allrigh/bouncer?my_key1=i[(Gz$xrCcCeaCrHv}[5Ryou4kz@Yh~c@K_if-p7vGQ3ZF[fEpm2SmH(Z6Yh40Ea
at java.net.URI$Parser.fail(URI.java:2825)
at java.net.URI$Parser.checkChars(URI.java:2998)
at java.net.URI$Parser.parseHierarchical(URI.java:3088)
at java.net.URI$Parser.parse(URI.java:3030)
at java.net.URI.<init>(URI.java:595)
at java.net.URI.create(URI.java:857)
... 6 more
据我所知,第 65 个字符是“ H
”……所以这是怎么回事?!?除了找出我的 URI 有什么问题之外,下一个明显的问题是:我能做些什么来解决这个问题?我需要对 URI 进行 base-64 编码吗?如果是这样,怎么做?提前致谢!