Phonegap на Android: сбой AJAX-запроса при настройке Accept: 'application / xml' в заголовке запроса - PullRequest
1 голос
/ 09 марта 2012

Я делаю GET запросы к API REST Assembla. Вы можете прочитать об этом здесь: 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
});

Как я уже сказал, этот запрос не будет срабатывать ни по onSuccess, ни по onError в Android. Запрос прекрасно работает в iOS и Safari. Если я уберу свойство headers, запрос будет зависеть от OnSuccess в Android, но вернет html.

Ответы [ 3 ]

0 голосов
/ 09 марта 2012

Авторизация не удалась на Android, просто задали свойства имени пользователя и пароля в запросе ajax. Ручная установка заголовков устранила проблему.

headers: { 
    Accept: 'application/xml',
    Authorization: 'Basic ' + window.btoa('username:password')
}
0 голосов
/ 17 апреля 2012

У меня похожая проблема здесь: Запрос на мыло с jQuery / Phonegap всегда терпит неудачу на Android , тогда как мне не нужно указывать параметры авторизации.

0 голосов
/ 09 марта 2012

Проверяли ли вы запрос и ответ в firebug или httpheaders, чтобы убедиться, что они выглядят правильно? В основном смотрите, чтобы убедиться, что ваш заголовок установлен правильно по запросу. Дважды проверьте, что вы не получаете никаких ошибок сервера, и посмотрите, является ли ответ, возвращающийся, действительно xml.

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