2012-09-17 7 views
6

Ich habe mehrere Sonderzeichen URLs, die ich mit Jsoup.connect (string) verbinden muss, aber es die Seite nicht laden (Fehler 500 erhalten). Ich bin nicht so sehr in URLs und so, aber ich denke, es hat etwas mit der von JSoup.connect verwendeten Codierung zu tunJsoup.connect (String) Codierungsprobleme

Wie auch immer, wie würde ich fortfahren, damit Links Sonderzeichen wie haben: Æ Ø Å è usw. die Ausnahme ich erhalte ist:

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) 

der Code, der diesen Fehler produziert ist:

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

Wo die placesURL Zeichenfolge ist:

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

Wer hat eine Idee, um dies zu umgehen?

Danke!

Antwort

6

Bei der URL-Codierung Probleme würde ich empfehlen, Ihre Anfrage mit einem URL-Encoder-Tool zuerst zu analysieren (StackOverflow answer regarding those). Einer kommt schon mit Java.

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

es auf Ihrem unformatierte Zeichenfolge oben verwenden, sollte es etwas wie folgt aussehen:

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

... um nicht Ihre gesamte URL URL-kodieren, nur den Teil der Abfrage, die Sie brauchen UTF-8 (oder UTF-16) kompatibel sein.

+1

% s ist die Zeichenfolge, die die Abfrage verarbeitet (über String.Format), und ich habe bereits einen Schlüssel, Using URLEncoder.encode (stringToBeEncoded, "UTF-8"), gab mir einen fehlerhaften URL-Fehler; java.lang.IllegalArgumentException: Fehlerhafte URL: https% 3A% 2F% 2Fmaps.googleapis.com% 2Fmaps% 2Fapi% 2Fplace% 2Ftextsearch% 2Fxml% 3Fanfrage% 3D1001% 2520Natt% 2C% 2520Norge% 26sensor% 3Dfalse% 26key% lkg% 26radius % 3D10 – user1677631

+0

In diesem Fall verwenden Sie den URLEncoder nur für den "Abfrage" -Teil Ihres Strings ... z JSoup.connect (puresURL.format (URLEncoder.encode (queryString, "UTF-8")); –

4

Wie dumm von mir, und nicht nur die Abfrage-String codiert, i die gesamte URL-kodiert ..

gelöst, indem Sie diese:

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

Danke für die Hilfe!

+1

Ich bin mir nicht mehr sicher, wer zuerst "beste Antwort" verdient, lol. Ich bin froh, dass ich helfen konnte. –