xmlHttpRequest到WP8中的绝对url

时间:2013-08-14 23:42:46

标签: windows-phone-8 xmlhttprequest

我在Windows Phone 8中测试应用时遇到了一个奇怪的问题。我正在使用xmlHttpRequest(不能使用ajax,因为我需要发送为bufferarray)来拨打第三方网址。这在Android和iOS中完美运行,但在WP8中引发错误 例如:

 var xhr = new XMLHttpRequest();
 xhr.onreadystatechange = function (){                      
      if(xhr.readyState == 4){
           if(xhr.status==200){     
               alert(xhr.responseText);
           }else{
                console.log("Error: "+xhr.responseText);
           }
      }
 }
 console.log("1");
 xhr.timeout = 30000;
 console.log("2");
 xhr.open("POST","http://google.com",true);
 console.log("3");
 xhr.setRequestHeader("Content-Type",contentType+"; boundary=" + boundary);
 console.log("4");
 //other headers / auth etc
 console.log("about to post");
 xhr.send(bodyBuf);

这将导致:

 log:"before request"
 log:"1"
 log:"2"
 log:"Error in error callback: Cameraxxxxx = InvalidStateError"

但是,如果我改开:

 xhr.open("POST","google.com",true); //or www.google.com etc

这是直接发送,但随后找到404状态,因为找不到网址。我显然没有在我的请求中使用谷歌,但错误是一样的。使用“http://”时出现错误,但没有,它没有错误但无法找到网址。

任何想法都赞赏。


我找到了一件事,但不确定它是否相关。根据W3C html 5文档,如果文档未完全活动(当它是其浏览上下文的活动文档时),则会在open()上显示InvalidStateError。如果这是错误的原因;如何将文档不是活动文档以及如何定义不驻留在URL上的应用程序的基本URL(文档建议将基础设置为文档的文档基本URL(或设置源源/引用源))?


离得更近了一步。经过大量的调整,我最终发现由于某种原因,WP8需要在应用其他任何东西之前打开xhr。所以将xhr.timeout移动到xhr.open以下的工作。

这在我的特定案例中提出了另一个问题..但这可能是另一个话题。

1 个答案:

答案 0 :(得分:2)

解决方案是将超时移至open .. shop>以下

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (){                      
  if(xhr.readyState == 4){
       if(xhr.status==200){     
           alert(xhr.responseText);
       }else{
            console.log("Error: "+xhr.responseText);
       }
  }
}
xhr.open("POST","http://google.com",true);
xhr.timeout = 30000;
xhr.setRequestHeader("Content-Type",contentType+"; boundary=" + boundary);
//other headers / auth etc

xhr.send(bodyBuf);