- 10月24日进行了大量编辑 -
我有一个移动应用程序,用户必须做的第一个操作是输入他想要用来保存,获取信息等的服务器的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);
我试过了:
我在两部手机上试过了。
在第一部手机上,每次都会调用callbackFailure,这很好。来自&#39; A&#39;的日志到&#39; F&#39;显示。
在第二部手机上,测试1和3都可以(调用callbackFailure),但测试2,4和5在日志&#39; C&#39;之后停止。屏幕冻结然后没有其他任何记录(没有Android,Eclipse或Chrome错误)。
还有其他的东西:如果在第二部手机上没有工作但在第一部手机上工作(2,4和5),则日志和C&#39之间会有日志;和&#39; D&#39; (所以它在第二部手机上冻结了):
XMLHttpRequest无法加载http://whatever:Whocares/4DSOAP。无法开始加载。
所以在某些情况下似乎无法完成请求(IP没有估值,端口用字符串值),第一部手机在第二部手机什么都不做的时候调用callbackFailure。
答案 0 :(得分:0)
SOAPRequete = SOAPRequete + '</mns:' + _methode + '>' + '</SOAP-ENV:Body>' + '</SOAP-ENV:Envelope>';
SOAPRequete = escape(SOAPRequete);