我正在尝试使用jquery ajax调用来调用webservice。 我使用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);
}
webservice响应。
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" />
答案 0 :(得分:1)
在网络服务网址中,请尝试使用10.0.2.2
代替localhost
localhost
或127.0.0.1
指向模拟器/ android设备,而10.0.2.2
是主机环回接口的特殊别名(即开发计算机上的127.0.0.1
)。有关详细信息,请查看此Link。