Jsoup.проблемы с кодировкой connect(string)
у меня есть несколько специальных символов url, к которым я должен подключиться с помощью Jsoup.connect (string), но не удается загрузить страницу (получение ошибки 500). Я не очень разбираюсь в URL и таких, но я думаю, что это имеет какое-то отношение к кодировке, используемой JSoup.connect
В любом случае, как я буду действовать, чтобы ссылки имели специальные символы, такие как: Æ Ø Å è etc, исключение, которое я получаю:
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
У кого-нибудь есть идея обойти это?
спасибо!
2 ответов
столкнувшись с проблемами кодирования URL, я бы рекомендовал вам сначала проанализировать ваш запрос с помощью инструмента кодирования URL (StackOverflow ответ относительно тех). Один уже поставляется с Java.
URLEncoder.encode(stringToBeEncoded, "UTF-8")
используя его на неформатированной строке выше, он должен выглядеть примерно так:
Document gDoc = JSoup.connect(placesURL.format(URLEncoder.encode(queryString, "UTF-8"));
... что касается не URL-кодирования всего URL-адреса, то только часть запроса должна быть совместима с UTF-8 (или UTF-16).
Как глупо с моей стороны, вместо того, чтобы просто кодировать строку запроса, я закодировал весь 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"));
Спасибо за помощь!