2013-09-16 3 views
-1

Я пытаюсь получить доступ к моим URI из кода нижеAndroidHttpClient.execute возвращается HttpResponse утратившим

AsyncTask asyncTask = new AsyncTask() { 

     @Override 
     protected Object doInBackground(Object... params) { 
      AndroidHttpClient httpClient = AndroidHttpClient.newInstance(""); 
      HttpUriRequest uriGetRequest = new HttpGet("http://localhost:8080/restsql-0.8.6/res/"); 
      HttpResponse httpResponse = null; 
      try { 
       httpResponse = httpClient.execute(uriGetRequest); 
       ; 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       if(e!=null){ 
       Log.e("ModelLoader", e.getMessage(), e); 
       } 
       Log.e("Model Loader", "Error while calling execute"); 
      } 
      return httpResponse; 
     } 
    }; 
    asyncTask.execute(new Object()); 

Но всегда HttpResponse равна нулю. Даже исключение не выбрасывается. Я проверил с действительным uri как https://google.co.in/ и его работая отлично. Также мой URI из браузера работает нормально. Поскольку нет никакого исключения, я не могу продолжать дальше.

+0

Btw, если вам не нужны какие-либо параметры, вы можете расширить свой AsyncTask с помощью Void, например 'AsyncTask ' – Enrichman

ответ

2

В AVD для подключения к локальным вам необходимо использовать URL-адрес

 http://10.0.2.2/ 

вместо

 http://localhost/ 

Для reference.

+2

+1, 'localhost' на вашей машине разработки соответствует собственному интерфейсу loopback эмулятора , Если вы хотите получить доступ к службам, запущенным на интерфейсе loopback вашего компьютера, вы должны использовать специальный адрес '10.0.2.2' вместо –

+0

Почему это показывает мне 400: Плохой запрос ... мои службы работают на localhost. и я вызываю его из эмулятора android с помощью пути: http://10.0.2.2:52511/api/Values/GetProduct/5 –

0

Чтобы получить доступ к localhost в использовании эмулятора 10.0.2.2

http://localhost:8080/restsql-0.8.6/res/ 

должен быть

http://10.0.2.2:8080/restsql-0.8.6/res/ 

Проверьте docs

Смежные вопросы