各位,
我正在做一个Phonegap应用程序和Sencha框架。
我试图到达一个受保护的服务器,但认证失败与Android(但不是与iOS)。我使用下面的代码:
Ext.Ajax.request({
url:"http://user:password@api.website.fr/query.json",
method: 'GET',
// I tried to send the header directly but it didn't work too
headers: {
"Authorization": "Basic s2dh3qs76jd2hqjsdh=="
},
success: function (result, request) {
alert(result);
},
failure: function ( result, request) {
for(var key in result)
alert(result[key]);
}
});
错误信息告诉我需要HTTP摘要…
Just to know:
- 网络连接正常
- 相同的代码与本地文件和其他外部api一起工作
- 我不知道如何在LogCat中探索Javascript对象,所以请原谅我恶心的
alert(result[key])
谢谢你们,你们太棒了!
我同意@Mariano。为什么不能在浏览器中尝试一下,然后将其部署为带有phonegap的应用程序呢?跨域问题可以通过这个命令从终端启动google chrome来解决
查看此链接获取更多信息
http://www.senchatouchbits.com/7/cross-domain-ajax-requests.html我在验证ajax请求时遇到了无尽的麻烦,但我终于让它工作了。我得到了一个基本的base64_encode网络算法。然后你需要做的就是调整标题,如下所示
Ext.Ajax.request({
url:'yourwebserviceurl',
method:'GET',
headers: {
Authorization: 'Basic '+ base64_encode(form.username+':'+form.password)
},
success: function(response){
//Ext.Msg.alert(response.responseXML);
console.log(response.responseText);
},
failure: function(response){
//console.log('Success response: ' + response.responseText);
Ext.Msg.alert('b');
}
});
这对一个基本的soap服务有效!
我有同样的问题…你能把它修好吗?
顺便说一句……您必须像这样设置用户名和密码:
Ext.Ajax.request({
url:"http://api.website.fr/query.json",
method: 'GET',
username : 'user',
password : 'password',
// I tried to send the header directly but it didn't work too
headers: {
"Authorization": "Basic s2dh3qs76jd2hqjsdh=="
},
success: function (result, request) {
alert(result);
},
failure: function ( result, request) {
for(var key in result)
alert(result[key]);
}
});
使用console.log来查看js对象有什么,你总是必须在浏览器中使用调试器(如Firebug)来尝试应用程序,以更容易地检测问题。
对于Android的问题,请确保这一行在phonegap应用程序清单文件中:& lt;uses-permission android: name = " android.permission。互联网"> & lt;/使用-权限>
祝你好运!
这是一个跨域请求问题。您必须修改代码以创建JSONP请求
Ext.util.JSONP.request({
url: 'http://url',
callbackKey: 'callback',
callbackName: 'callback',
model: 'Model',
params: {},
callback: function(result){
var shows = result.data;
},
});
请记住,您还必须适应服务器端,因此它的响应是json结果(回调)