2012-09-17 11 views
6

मेरे पास कई विशेष वर्ण यूआरएल हैं जिन्हें मुझे Jsoup.connect (string) से कनेक्ट करना है, लेकिन यह पृष्ठ लोड करने में विफल रहता है (त्रुटि 500 ​​प्राप्त हो रही है)। मैं वास्तव में यूआरएल में इतना नहीं हूं और ऐसा लगता है कि मुझे लगता है कि इसमें JSoup.connectJsoup.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(); 

कहाँ placesURL स्ट्रिंग है:

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

किसी को भी इस बारे में कोई विचार है?

धन्यवाद!

उत्तर

6

यूआरएल-एन्कोडिंग समस्याओं में चल रहा है, तो मैं आपको एक यूआरएल एन्कोडर टूल का उपयोग करके अपने अनुरोध को पहले पार्स करने की सलाह दूंगा (StackOverflow answer regarding those)। एक जावा के साथ पहले से ही आता है।

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

अपने अस्वरूपित स्ट्रिंग पर इसका इस्तेमाल करते हुए ऊपर है, यह कुछ ऐसा दिखाई देगा:

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

... के रूप में करने के लिए नहीं अपने पूरे यूआरएल पूछताछ में केवल आप की जरूरत का हिस्सा यूआरएल-सांकेतिक शब्दों में बदलना, यूटीएफ -8 (या यूटीएफ -16) अनुपालन हो।

+1

% s वह स्ट्रिंग है जो क्वेरी प्रसंस्करण कर रही है (स्ट्रिंग.फॉर्मैट के माध्यम से) और मुझे पहले से ही एक कुंजी मिल गई है, URLEncoder.encode (stringToBeEncoded, "UTF-8") का उपयोग करके, मुझे एक विकृत यूआरएल त्रुटि दी; java.lang.IllegalArgumentException: विकृत यूआरएल: https% 3 ए% 2 एफ% 2Fmaps.googleapis.com% 2 फ़ैप्स% 2 फ़ैपी% 2 स्थान% 2Ftextsearch% 2Fxml% 3Fquery% 3D1001% 2520Natt% 2C% 2520 नॉर्ज% 26 सेंसर% 3Dfalse% 26key% lkg% 26radius % 3 डी 10 – user1677631

+0

इस मामले में आप केवल अपनी स्ट्रिंग के "क्वेरी" भाग पर URLEncoder का उपयोग करेंगे ... उदा। JSoup.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

मैं अब निश्चित नहीं हूं कि पहले "सर्वश्रेष्ठ उत्तर" का हकदार है, lol। Glad मैं मदद कर सकता था, हालांकि। –

संबंधित मुद्दे