#javascript #android #xmlhttprequest
#javascript #Android #xmlhttprequest
Вопрос:
— ОГРОМНАЯ ПРАВКА СДЕЛАНА 24.10 —
У меня есть мобильное приложение, где первое действие, которое должен выполнить пользователь, это ввести IP и порт сервера, который он хочет использовать для сохранения, получения информации и т.д.
Когда пользователь отправляет IP-адрес и порт, которые он ввел в поля, предполагается, что каждый случай будет обработан, включая случаи сбоя, если он ввел неверную информацию, или сервер не работает, или у его мобильного телефона нет сети.
Я сосредоточусь здесь на случаях, когда сеть в порядке и сервер тоже, поэтому проблема в том, что пользователь ввел в поля.
Вот запрос:
[...]
SOAPRequete = SOAPRequete '</mns:' _methode '>' '</SOAP-ENV:Body>' '</SOAP-ENV:Envelope>';
console.log('A');
var request = new XMLHttpRequest();
console.log('B');
request.open("POST", "http://" _ip ":" _port "/4DSOAP", true);
console.log('C');
request.onreadystatechange = function() {
console.log('D');
if (request.readyState == 4) {
console.log('E');
if (request.status == 200) {
_callbackSuccess(request.responseXML);
} else {
console.log('F');
_callbackFailure(request.responseXML);
}
}
}
request.send(SOAPRequete);
Я пытался:
- IP ‘какой угодно’ и порт ‘12345’
- IP ‘whatever’ и порт ‘whoocares’
- IP ‘whatever’ и порт ничего
- IP ничего и порт ничего
- IP ничего, а порт ‘12345’
Я пробовал это на двух телефонах.
На первом телефоне callbackFailure вызывается в каждом случае, что хорошо. Отображаются журналы от ‘A’ до ‘F’.
На втором телефоне тесты 1 и 3 в порядке (вызывается callbackFailure), но тесты 2, 4 и 5 останавливаются после входа в журнал ‘C’. Экран зависает, после чего больше ничего не регистрируется (нет ошибок Android, Eclipse или Chrome).
И есть кое-что еще: в случаях, которые не работают на втором телефоне, но работают на первом (2, 4 и 5), есть журнал между журналами ‘C’ и ‘D’ (поэтому, когда он зависает на втором телефоне):
XMLHttpRequest не удается загрузить http://whatever:Whocares/4DSOAP . Не удалось начать загрузку.
Таким образом, кажется, что запрос просто не может быть выполнен в некоторых случаях (IP не указан, порт указан строкой), и первый телефон вызывает callbackFailure, когда второй телефон ничего не делает.
Комментарии:
1. Я внес огромную правку.
Ответ №1:
вы пробовали это?
SOAPRequete = SOAPRequete '</mns:' _methode '>' '</SOAP-ENV:Body>' '</SOAP-ENV:Envelope>';
SOAPRequete = escape(SOAPRequete);
Комментарии:
1. Я пробовал, но это ничего не меняет. Действительно, я отредактировал свой вопрос, потому что кажется, что он работает на телефоне, но не на другом.