Android上的Phonegap:在请求标头上设置Accept:'application / xml'时,AJAX请求失败

时间:2012-03-08 23:20:38

标签: android ajax cordova

我正在向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。

3 个答案:

答案 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而我不需要指定任何授权参数。