我正在向Assembla REST API发出GET请求。您可以在此处阅读:http://www.assembla.com/spaces/breakoutdocs/wiki/Assembla_REST_API
API要求您在请求标头上设置Accept:'application / xml'以接收xml数据。否则,html会在响应中返回。
我的服务电话适用于iOS和Safari,但不会在Android中返回任何内容。
我的cordova.xml文件有<access origin=".*"/>
,所以我不认为这是白名单问题。我已经尝试了几乎所有我能想到的变化。
示例ajax请求:
$.ajax({
url: 'https://www.assembla.com/spaces/my_spaces',
username: userModel.get('username'),
password: userModel.get('password'),
headers: {
Accept: 'application/xml'
},
success: onSuccess,
error: onError
});
就像我说的,这个请求不会在Android中的onSuccess或onError中出现。该请求在iOS和Safari中完美运行。如果我取出headers属性,请求将在Android中点击onSuccess但会返回html。
答案 0 :(得分:0)
您是否检查过firebug或httpheaders中的请求和响应,看看它们看起来是否正确?基本上看看您的标头是否在请求中正确设置。仔细检查您是否收到任何服务器错误,并查看返回的响应是否实际为xml。
答案 1 :(得分:0)
Android上的授权失败,只是在ajax请求上设置了用户名和密码属性。手动设置标题可以解决问题。
headers: {
Accept: 'application/xml',
Authorization: 'Basic ' + window.btoa('username:password')
}
答案 2 :(得分:0)
我在这里有类似的问题:Soap query with jQuery / Phonegap always fail on Android而我不需要指定任何授权参数。