Phonegap + Sencha + Android: запрос ajax с простой аутентификацией доступа не выполнен - PullRequest
3 голосов
/ 09 ноября 2011

Я, ребята,

Я работаю над приложением 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 ...

Просто чтобы знать:

  • Интернет-связь в порядке
  • Тот же код работает с локальным файлом и другими внешними API
  • Я не знаю, как исследовать объекты Javascript в LogCat, так что извините за мое отвратительное alert(result[key])

Спасибо, ребята, вы все молодцы!

Ответы [ 5 ]

3 голосов
/ 11 ноября 2011

Я согласен с @Mariano.Почему вы не можете попробовать это в браузере, а затем развернуть как приложение с пробелом в телефоне.Кросс-доменную проблему можно решить, запустив Google Chrome из терминала с помощью этой команды google-chrome --args --disable-web-security

Для получения дополнительной информации перейдите по этой ссылке.

http://www.senchatouchbits.com/7/cross-domain-ajax-requests.html

2 голосов
/ 29 мая 2013

У меня были бесконечные проблемы с аутентификацией моих запросов 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');                    
            }    
    });

Это сработало для простого мыла!

1 голос
/ 30 ноября 2011

У меня та же проблема ... где вы можете это исправить?

Кстати ... вы должны установить пользователя и пароль следующим образом:

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]);
    } 
});
0 голосов
/ 11 ноября 2011

Это проблема междоменного запроса. Вы должны изменить свой код для создания запроса JSONP

Ext.util.JSONP.request({
        url: 'http://url',
        callbackKey: 'callback',
        callbackName: 'callback',
        model: 'Model',

        params: {},

        callback: function(result){
            var shows = result.data;                        
        },                  
    });

Имейте в виду, что вам нужно адаптировать и серверную сторону, чтобы ответом на него был результат jsonp (обратный вызов)

0 голосов
/ 10 ноября 2011

Используйте console.log, чтобы увидеть, что имеет объект js, вы всегда должны попробовать приложение в браузере с отладчиком, таким как Firebug, для более легкого выявления проблем.

Чтобы решить проблему с Android, убедитесь, что эта строка находится в файле манифеста приложения phonegap: <Использования разрешения Android: имя = "android.permission.INTERNET"> </ использует- разрешение>

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...