2010-04-12 100 views
2

我有一個GET方法如下所示:當直接輸入到瀏覽器中如何在使用Apache HttpClient的查詢中正確編碼「[」和「]」?

GetMethod method = new GetMethod("http://host/path/?key=[\"item\",\"item\"]"); 

這樣的路徑工作得很好,但上面的線在運行時產生一個IllegalArgumentException:無效的URI。

我看過使用URIUtils類,但沒有成功。有沒有一種方法可以自動編碼(或將查詢字符串添加到URL而不會導致HttpClient陷入?)。

回答

2

所提URIUtils類有一個方法encodeAll(str) - 這樣:

new GetMethod("http://host/path/?key=" 
     + URIUtil.encodeAll("[\"item\",\"item\"]")); 
+0

導致另一個異常:異常在線程 「主要」 java.lang.IllegalArgumentException:主機參數爲空 – 2010-04-12 20:43:37

+0

@Jason Nichols - 請參閱我的更新。你必須只編碼參數,而不是整個uri – Bozho 2010-04-12 20:47:23

+0

你知道,我發誓我早期試過,它沒有工作=)自然現在=))謝謝! – 2010-04-12 20:51:24

2

您還可以使用java.net.URLEncoder中:

String myURL = "http://host/path/?" + 
    URLEncoder.encode("key=[\"item\",\"item\"]", UTF-8); 
+0

並根據[此消息](http://www.mail-archive.com/[email protected]/msg02680.html)這是如何在HttpClient 4中完成的。 – Paul 2012-02-21 04:32:10

相關問題