2012-09-17 3 views
6

몇 가지 특수 문자 url이 Jsoup.connect (문자열)에 연결해야하지만 오류 500이 발생하여 페이지를로드하지 못합니다. URL에 대한 것만은 아니지만 JSoup.connect에서 사용하는 인코딩과 관련이 있다고 생각합니다.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) 

이 오류를 생성 된 코드는 다음과 같습니다

다음 placesURL 문자열이

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

0

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

누구든지이 문제를 해결할 생각이 있습니까?

감사합니다.

답변

6

URL 인코딩 문제로 인해 URL 인코딩 도구 (StackOverflow answer regarding those)를 사용하여 요청을 구문 분석하는 것이 좋습니다. 하나는 이미 자바와 함께 제공됩니다. , 당신이 필요로하는 쿼리의 단지 부분을 전체 URL을 URL 인코딩하지로 ...

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

:

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

위의 서식 문자열을 사용하여, 같은 보일 것이다 UTF-8 (또는 UTF-16)을 준수해야합니다. 대신 그냥 쿼리 문자열을 인코딩, 내가 전체 URL을 인코딩 나를 어떻게 바보

+1

% s는 (String.Format을 통해) 쿼리가 처리하는 문자열이며 URLEncoder.encode (stringToBeEncoded, "UTF-8")를 사용하여 잘못된 URL을 제공합니다. java.lang.IllegalArgumentException : 형식이 잘못된 URL : https % 3A % 2F % 2Fmaps.googleapis.com % 2Fmaps % 2Fapi % 2Fplace % 2Fextsearch % 2Fxml % 3Fquery % 3D1001 % 2520Natt % 2C % 2520Nort % 26sensor % 3Dfalse % 26key % lkg % 26radius % 3D10 – user1677631

+0

이 경우 URLEncoder는 문자열의 "쿼리"부분에서만 사용합니다 ... 예 012oux.connect (placesURL.format (URLEncoder.encode (queryString, "UTF-8")); –

4

..

이 일이 해결 : 도움을

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

처음에는 "최선의 답변"을받을 자격이있는 사람이 더 이상 없습니다. –