我大家,
我正在研究Phonegap应用程序和Sencha框架。
我尝试访问protected server但是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摘要...
要知道:
alert(result[key])
谢谢你们,你们都摇滚!
答案 0 :(得分:3)
我同意@Mariano。为什么你不能在浏览器中尝试它,然后部署为带有phonegap的应用程序。可以通过此命令从终端启动Google Chrome来解决跨域问题 google-chrome --args --disable-web-security
查看此链接以获取更多信息
http://www.senchatouchbits.com/7/cross-domain-ajax-requests.html
答案 1 :(得分:2)
我在验证我的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');
}
});
这适用于基本的肥皂服务!
答案 2 :(得分:1)
我有同样的问题......你能解决它吗?
顺便说一下......你必须像这样设置用户和密码:
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]);
}
});
答案 3 :(得分:0)
使用console.log来查看js对象的内容,你总是必须在浏览器中尝试使用像Firebug这样的debbuger来更轻松地检测问题。
要解决Android问题,请确保此行位于phonegap应用清单文件中: < uses-permission android:name =“android.permission.INTERNET”>< /使用说明 - 许可>
祝你好运!
答案 4 :(得分:0)
这是跨域请求问题。您必须修改代码才能创建JSONP请求
Ext.util.JSONP.request({
url: 'http://url',
callbackKey: 'callback',
callbackName: 'callback',
model: 'Model',
params: {},
callback: function(result){
var shows = result.data;
},
});
请记住,您还必须调整服务器端,以便对其进行响应是jsonp结果(回调)