2012-06-27 2 views
0

Я пытаюсь вызвать webservice с помощью jquery ajax call. Я использую jasonp как тип данных для исправления проблем с перекрестными доменами.Jquery ajax call failed на эмуляторе Android

Он отлично работает во всех браузерах. Я тестировал его на других доменах. Я получаю действительный ответ. Когда я пытаюсь запустить его из эмулятора устройства Android, вызов webservice завершается с ошибкой.

Просьба предложить.

Код:

function getJsonData() 
{ 
    alert("Within get json function.. "); 
    (function($) { 
    var url = 'http://localhost:8080/mobile-services/rest/languages.json?callback=callback'; 
    $.ajax({ 
     type: 'GET', 
     url: url, 
     async: false, 
     contentType: "application/json", 
     dataType: 'jsonp' 
    }); 
})(jQuery); 
} 
function callback(data) 
     { 
      alert(data); 
     } 

вебсервис ответ.

callback([{"language":"English","id":1},{"language":"Hindi","id":2},{"language":"Marathi","id":3}]) 

, который является действительным ответом jsonp.

Разрешения для файлов манифеста Android.

<uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
+5

'http: // localhost: 8080' --- ваш веб-сервер встроен в ваш эмулятор Android? –

+0

Нет встроенного в андроидный эмулятор. его на той же машине. Я могу получить доступ к веб-сервисам через браузер эмулятора. –

+0

Отметьте ответ Ajinkya ниже –

ответ

1

В URL веб-службы попробуйте использовать 10.0.2.2 вместо localhost.
localhost или 127.0.0.1 указывает на эмулятор/устройство Android в то время как 10.0.2.2 является специальным псевдонимом для вашего интерфейса loopback хоста (т. Е. 127.0.0.1 на вашей машине разработки). Проверьте это Link для более подробной информации.

+0

Спасибо за его работу с 10.0.2.2 –

+0

@ChetanShirke: HTH :) – xyz