2012-09-17 27 views
6

Jsoup.connect (string) ile bağlanmam gereken birkaç özel karakter URL'im var, ancak sayfa yüklenemediğinde (500 hatası alıyor). URL'lerin içine çok fazla değinmiyorum ama sanırım JSoup.connectJsoup.connect (string) kodlama sorunları

tarafından kullanılan kodlamayla ilgili bir şey var. Neyse, bağlantıların özel karakterlere sahip olmasını sağlamak için nasıl devam edeyim: Æ bir e vs i alıyorum istisnadır:

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) 

bu hatayı üretiyor kod şudur:

: placesURL dizedir

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

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

Bu konuyla ilgili bir fikrin var mı?

Teşekkürler!

cevap

6

URL kodlama sorunları içine girerek, isteğinizi önce bir URL kodlayıcı aracı kullanarak (StackOverflow answer regarding those) çözümlemenizi öneririm. Birisi zaten Java ile geliyor. Yapmanız gerekenler sorgunun sadece bir bölümünü tüm URL'yi URL kodlamak etmeyecek ...

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

:

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

yukarıdaki biçimlendirilmemiş dize üzerinde kullanarak, bu gibi görünmelidir UTF-8 (veya UTF-16) uyumlu olmalıdır. Bunun yerine sadece sorgu dizesi kodlama, ben bütün URL'yi kodlanmış beni nasıl aptal

+1

% s, sorgunun işlendiği dizedir (String.Format aracılığıyla) ve zaten bir anahtarım var, URLEncoder.encode (stringToBeEncoded, "UTF-8") kullanma, Bana Hatalı Biçimlendirilmiş URL hatası verdi; java.lang.IllegalArgumentException: Yanlış biçimlendirilmiş URL: https% 3A% 2F% 2Fmaps.googleapis.com% 2Faps% 2Fapi% 2Fplace% 2Ftextsearch% 2Fxml% 3Fquery% 3D1001% 2520Natt% 2C% 2520Norge% 26sensor% 3Dfalse% 26key% lkg% 26radius % 3D10 – user1677631

+0

Bu durumda, URLEncoder'ı dizginizin "sorgu" kısmına kullanacaksınız. JSoup.connect (placesURL.format (URLEncoder.encode (queryString, "UTF-8")); –

4

, ..

yaparak çözüldü: Yardım için

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")); 

Teşekkür!

+1

Artık "en iyi cevap" ilkini kimin hak ettiğinden emin değilim, lol. –