0

我正在尝试使用 jquery ajax 调用来调用 web 服务。我使用 jasonp 作为数据类型来解决跨域问题。

它在所有浏览器中都能正常工作。我在其他域上对其进行了测试。我得到了有效的回应。当我尝试从 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" />
4

1 回答 1

1

在 Web 服务 URL 中尝试使用 10.0.2.2 而不是localhost.
localhost127.0.0.1指向模拟器/安卓设备,同时10.0.2.2是主机环回接口的特殊别名(即127.0.0.1在您的开发机器上)。检查此链接以获取更多详细信息。

于 2012-06-27T07:58:14.200 回答