2012-09-21 30 views
10

"Hedef ana makine null olmamalı veya parametrelerde ayarlanmamalı" hatası alıyorum. Ben DOAna bilgisayar adı, HttpResponse uygulamasında boş bırakılamıyor olabilir android için

  • benim manifest dosyasında
  • ben koydum
  • 'http: //' İnternet iznine sahip benim Url önce kodlamak URL DO

Bu benim kodum:

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. satırda (son satır), programım bir istisna atar.

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

Ben metod convertURL benim dize kodlamak mı ...

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

Herhangi öneriler: Burada kesin hatadır? Teşekkürler!

+0

URL'de boşluk olamaz! URL'nizi nasıl kodladığınızı görmeme izin verin – Samer

+0

Sorun muhtemelen convertURL işlevinizde ... bir hata ayıklayıcı kullanın ve bunun ne olduğunu görmek için kontrol edin. – Joel

+0

Merhaba! Tüm URL'yi geçiyordum, değiştirdim ama yine de bana hata veriyor ... 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' – cafesanu

cevap

5

emin değilim ne URL kodlamak yöntemi yapıyor, ancak URLEncoder, gibi bir yöntem kullanıyorsanız, hiçbir zaman özel karakterlerden kaçmak için kodlamak için gereken tüm parametreler listesini geçirmeniz gerekir.

Tam URL'yi kodlamak, :// dahil %3A%2F%2F ve ek olarak tüm ek eğik çizgileri %2F'a dahil olmak üzere her karakterden kaçışla sonuçlanır.

Kodunuzu kodladıktan sonra goodUrl dizesinin değerine bakın.

+0

Merhaba! Tüm URL'yi geçiyordum, değiştirdim ama yine de bana hata veriyor .... 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' – cafesanu

+0

Tamam, sizler haklısınız! Bütün URL'yi geçiyordum ... Sabitledim ama şimdi bana bu istisnayı veriyor! android.os.NetworkOnMainThreadException ama bunun hakkında ne olduğunu araştırabilirim ... Teşekkürler! – cafesanu

+2

"NetworkOnMainThreadException", tam olarak ne ifade ettiği anlamına gelir. Android, UI'yi engelleyeceği için ana iş parçacığından ağ erişimi yapmanıza izin vermez; Ağ G/Ç için bir arka plan iş parçacığı oluşturmanız gerekir. Bu eğitim makalesinden daha fazlasını öğrenebilirsiniz: http://developer.android.com/training/basics/network-ops/index.html – Devunwired

1

Hemen kullanın:?

URLEncoder.encode(YOUR_STRING); 
+0

i Dizgimi method convertURL yönteminde kodlar ... Bu sorun değil ... – cafesanu

1

İsteği göndermeden önce URL dizesini kodlayın, ama sonra parametrelerini kodlamak:

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

i Dizgemi method convertURL yönteminde kodla ... Bu sorun değil ... – cafesanu

+0

Acaba URLEncode herşeyi ana bilgisayar adı da dahil olmak üzere bu dize. Yukarıdaki örnekte, goodURL neye benziyor? Dize yerine, URL nesnesini kullanmayı deneyin ve ana makine adını ve kaynaklarını bu şekilde ayarlayın. – AWT

+0

Merhaba! Tüm URL'yi geçiyordum, değiştirdim ama hala bana hata veriyor .... goodURL http://maps.google.com/maps/api/directions/json?orijin =% 3 20Cedar% 20Ave% 2c% 20Highland% 20Park% 2c% 20NJ% 2008904 & hedef = 604% 20Bartholomew% 20Yol% 2c% 20Piscataway% 2c% 20New% 20Jersey% 2008854 & sensor = false' – cafesanu

İlgili konular