2012-09-21 19 views
10

के लिए HttpResponse निष्पादन में शून्य नहीं हो सकता है मुझे त्रुटि मिलती है "लक्ष्य होस्ट शून्य नहीं होना चाहिए, या पैरामीटर में सेट नहीं होना चाहिए"।होस्ट नाम का नाम एंड्रॉइड

  • मैं DO
  • मैं डाल दिया है 'http: //' मेरे मैनिफ़ेस्ट फ़ाइल में इंटरनेट की अनुमति है मेरी यूआरएल से पहले
  • मैं एनकोड यूआरएल DO

यह मेरा कोड है:

String url = "http://maps.google.com/maps/api/directions/json?origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false"; 
    HttpClient httpclient = new DefaultHttpClient(); 
    String goodURL = convertURL(url);//change weird characters for %etc 
    HttpPost httppost = new HttpPost(goodURL); 
    HttpResponse response = httpclient.execute(httppost); 

5 वीं लाइन (ऊपर की अंतिम पंक्ति) में, मेरा प्रोग्राम अपवाद फेंकता है।

java.lang.IllegalArgumentException: Host name may not be null 

मैं विधि convertURL में मेरी स्ट्रिंग सांकेतिक शब्दों में बदलना है ...

goodURL = http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave%2c%20Highland%20Park%2c%20NJ%2008904&destination=604%20Bartholomew%20Road%2c%20Piscataway%2c%20New%20Jersey%2008854&sensor=false

कोई सुझाव: यहाँ सटीक त्रुटि है? धन्यवाद!

+0

आपके पास यूआरएल में रिक्त स्थान नहीं हो सकते हैं! मुझे देखने दें कि आप अपना यूआरएल – Samer

+0

कैसे एन्कोड कर रहे हैं आपकी समस्या शायद आपके कन्वर्टर फंक्शन में है ... एक डीबगर का उपयोग करें और यह देखने के लिए जांचें कि वह क्या लौट रहा है। – Joel

+0

हाय! मैं पूरा यूआरएल पास कर रहा था, मैंने इसे संशोधित किया लेकिन यह अभी भी मुझे त्रुटि दे रहा है ... goodURL = 'http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave%2c % 20 हाईलैंड% 20 पार्क% 2 सी% 20 एनजे% 2008904 और गंतव्य = 604% 20 बार्थोलोम% 20 रोड% 2 सी% 20 पिसटावे% 2 सी% 20 नई% 20 जर्सी% 2008854 और सेंसर = झूठी' – cafesanu

उत्तर

5

मैं सुनिश्चित नहीं हूं कि क्या आपके यूआरएल एनकोड विधि कर रहा है, लेकिन यदि आप फ्रेमवर्क से URLEncoder, जैसे किसी विधि का उपयोग कर रहे हैं तो आपको कभी भी पूर्ण URL पास नहीं करना चाहिए, केवल पैरामीटर सूची जो आपको विशेष वर्णों से बचने के लिए एन्कोड करने की आवश्यकता है।

पूर्ण यूआरएल एन्कोडिंग प्रतिशत प्रत्येक चरित्र से बच जाएगा, जिसमें ://%3A%2F%2F और सभी अतिरिक्त स्लैश %2F में शामिल होंगे।

इसे एन्कोड करने के बाद अपने goodUrl स्ट्रिंग के मान पर नज़र डालें।

+0

हाय! मैं पूरा यूआरएल पास कर रहा था, मैंने इसे संशोधित किया लेकिन यह अभी भी मुझे एक त्रुटि दे रहा है .... goodURL 'http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave% है 2 सी% 20 हाईलैंड% 20 पार्क% 2 सी% 20 एनजे% 2008904 और गंतव्य = 604% 20 बार्थोलोम% 20 रोड% 2 सी% 20 पिसटावे% 2 सी% 20 नया% 20 जर्सी% 2008854 और सेंसर = झूठा' – cafesanu

+0

ठीक है, तो आप लोग सही थे! मैं पूरा यूआरएल पास कर रहा था ... मैंने इसे ठीक किया लेकिन अब यह मुझे यह अपवाद देता है! android.os.NetworkOnMainThreadException लेकिन मैं शोध कर सकता हूं कि यह क्या है ... धन्यवाद! – cafesanu

+2

"NetworkOnMainThreadException" का अर्थ यह है कि यह वास्तव में क्या कहता है। एंड्रॉइड आपको मुख्य थ्रेड से नेटवर्क एक्सेस करने की अनुमति नहीं देता है क्योंकि यह यूआई को अवरुद्ध करेगा; आपको नेटवर्क I/O के लिए पृष्ठभूमि थ्रेड बनाना होगा। आप इस प्रशिक्षण लेख से और जान सकते हैं: http://developer.android.com/training/basics/network-ops/index.html – Devunwired

1

बस का उपयोग करें:

URLEncoder.encode(YOUR_STRING); 
+0

मैं विधि कन्वर्ट में अपनी स्ट्रिंग को एन्कोड करता हूं ... इसलिए यह समस्या नहीं है ... – cafesanu

1

अपने URL स्ट्रिंग सांकेतिक शब्दों में बदलना इससे पहले कि आप अनुरोध पोस्ट है, लेकिन केवल के बाद पैरामीटर एन्कोड करें:?

String url = "http://maps.google.com/maps/api/directions/json?"; 
String params = "origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false"; 
HttpClient httpclient = new DefaultHttpClient(); 
String goodParams = convertURL(params);//change weird characters for %etc 
HttpPost httppost = new HttpPost(url + goodParams); 
HttpResponse response = httpclient.execute(httppost); 
+0

मैं विधि स्ट्रिंग में अपनी स्ट्रिंग एन्कोड करता हूं ... इसलिए यह समस्या नहीं है ... – cafesanu

+0

मुझे आश्चर्य है कि अगर URLEncode सबकुछ एन्कोड कर रहा है उस स्ट्रिंग, मेजबान नाम सहित। उपरोक्त आपके उदाहरण में, goodURL क्या दिखता है? स्ट्रिंग के बजाय, URL ऑब्जेक्ट का उपयोग करने का प्रयास करें, और इसमें होस्ट नाम और संसाधन सेट करें। – AWT

+0

हाय! मैं पूरा यूआरएल पास कर रहा था, मैंने इसे संशोधित किया लेकिन यह अभी भी मुझे एक त्रुटि दे रहा है .... goodURL 'http://maps.google.com/maps/api/directions/json है?उत्पत्ति = 3% 20 सीडर% 20%% 2c% 20 हाइलैंड% 20 पार्क% 2 सी% 20 एनजे% 2008904 और गंतव्य = 604% 20 बार्थोलोम% 20 रोड% 2 सी% 20 पिसटावे% 2 सी% 20 नया% 20 जर्सी% 2008854 और सेंसर = झूठा' – cafesanu

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