XMLHttpRequest无法使用某些IP和端口

时间:2016-10-21 10:31:29

标签: javascript android xmlhttprequest

- 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);

我试过了:

  1. IP &#39; &#39; 12345&#39;
  2. 知识产权&#39; &#39;
  3. IP &#39;无论&#39; 和什么都没有
  4. IP没有,什么都没有端口
  5. IP nothing and port &#39; 12345&#39;
  6. 我在两部手机上试过了。

    在第一部手机上,每次都会调用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。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

SOAPRequete = SOAPRequete + '</mns:' + _methode + '>' + '</SOAP-ENV:Body>' + '</SOAP-ENV:Envelope>';
SOAPRequete = escape(SOAPRequete);