2012-09-17 60 views
6

我有幾個特殊字符的網址我必須用Jsoup.connect(字符串)連接,但它無法加載頁面(出現錯誤500)。我真的沒有那麼多的URL和這樣的,但我認爲它與JSoup.connect使用的編碼有關係Jsoup.connect(字符串)編碼問題

反正,我將如何繼續以便允許鏈接有特殊字符,如: Æ ØA E等,我得到的例外是:

java.io.IOException: 500 error loading URL https://maps.googleapis.com/maps/api/place/textsearch/xml?query=Averøy%20restaurant%20og%20Pizzeria,%20Norge&sensor=false&key=xx&radius=10 
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:414) 
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:391) 
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:157) 
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:146) 
at HTMLParser.doParsing(HTMLParser.java:122) 
at HTMLParser.initParser(HTMLParser.java:50) 
at Main.main(Main.java:15) 

這是生產這種錯誤代碼是:

Document gDoc = Jsoup.connect(placesURL).get(); 

凡placesURL字符串是:

https://maps.googleapis.com/maps/api/place/textsearch/xml?query=%s&sensor=false&key=XX&radius=10 

任何人有任何想法解決這個問題?

謝謝!

回答

6

遇到URL編碼問題,我建議您先使用URL編碼器工具解析您的請求(StackOverflow answer regarding those)。一個已經與Java一起。

URLEncoder.encode(stringToBeEncoded, "UTF-8") 

使用它在你的無格式字符串上面,它應該是這個樣子:

Document gDoc = JSoup.connect(placesURL.format(URLEncoder.encode(queryString, "UTF-8")); 

...如不URL編碼您的整個URL,你需要查詢的只是一部分符合UTF-8(或UTF-16)。

+1

%s是查詢正在處理的字符串(通過String.Format),我已經得到一個鍵,使用URLEncoder.encode(stringToBeEncoded,「UTF-8」)給了我一個格式錯誤的URL錯誤; java.lang.IllegalArgumentException:格式不正確的URL:https%3A%2F%2Fmaps.googleapis.com%2Fmaps%2Fapi%2Fplace%2Ftextsearch%2Fxml%3Fquery%3D1001%2520Natt%2C%2520Norge%26sensor%3Dfalse%26key%lkg%26radius %3D10 – user1677631

+0

在這種情況下,您只會在字符串的「查詢」部分使用URLEncoder ...例如JSoup.connect(placesURL.format(URLEncoder.encode(queryString,「UTF-8」)); – 2012-09-18 13:10:38

4

是我的錯,而不是僅僅編碼的查詢字符串,我編碼整個URL ..

解決做這個:

String placesUrl = String.format("https://maps.googleapis.com/maps/api/place/textsearch/xml?query=%s&sensor=false&key=XX&radius=10",URLEncoder.encode(restaurantListe[i][0],"UTF-8")); 

感謝您的幫助!

+1

我不再確定誰首先應該得到「最佳答案」,大聲笑,很高興我能幫忙。 – 2012-09-18 17:02:17