6

Jsoup.connect(string) で接続する必要がある特殊文字の URL がいくつかありますが、ページの読み込みに失敗します (エラー 500 が発生します)。私はURLなどにはあまり興味がありませんが、JSoup.connectで使用されるエンコーディングと関係があると思います

とにかく、リンクに Æ Ø Å è などの特殊文字を使用できるようにするにはどうすればよいでしょうか。例外は次のとおりです。

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

placeURL 文字列は次のとおりです。

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

誰でもこれを回避する考えがありますか?

ありがとう!

4

2 に答える 2

6

URL エンコードの問題が発生した場合は、最初に URL エンコーダ ツールを使用してリクエストを解析することをお勧めします (それらに関する StackOverflow の回答)。1 つはすでに Java に付属しています。

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

上記のフォーマットされていない文字列で使用すると、次のようになります。

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

... URL全体をURLエンコードしないように、クエリの一部だけをUTF-8(またはUTF-16)に準拠させる必要があります。

于 2012-09-17T20:49:56.097 に答える
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"));

助けてくれてありがとう!

于 2012-09-18T12:01:20.247 に答える