【发布时间】:2012-06-27 16:14:45
【问题描述】:
Phonegap 团队,
我在使用 android 访问网络服务时遇到问题。我使用iOS访问它没有问题。 随附的代码使用公共网络服务,因此如果您愿意,可以尝试该代码。
在 iOS 上,我们得到一个 xmlhttp.status == 200 并返回数据。 在 Android 上,我们得到一个 xmlhttp.status == 0。
我们正在使用cordova-1.8.1.jar
我们在 res/xml/cordova.xml 中设置了白名单 像这样:
<access origin=".*"/>
我提出这个问题是因为我怀疑我们的白名单不起作用。
代码如下:
function testweather(){
var xhr= new XMLHttpRequest();
xhr.onreadystatechange = function(){
alert(xhr.readyState);
if(xhr.readyState == 4){
if(xhr.status == 200){
$( "#result" ).append( xhr.responseText );
}
else{
alert("can't get response. a.status:"+xhr.status);
}
}
}
var url = "http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php";
xhr.open("POST", url,true);
xhr.setRequestHeader("SOAPAction", "http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgenByDayLatLonList");
xhr.setRequestHeader("Content-Type", "text/xml;charset=UTF-8");
xhr.setRequestHeader("Content-Length", 1536);
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.setRequestHeader("Accept", "application/soap+xml, application/dime, multipart/related, text/*");
xhr.setRequestHeader("User-Agent", "IBM Web Services Explorer");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Pragma", "no-cache");
xhr.setRequestHeader("Connection", "close");
var soapEnv = '' +
'<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ndf="http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl">' +
' <soapenv:Header/>' +
' <soapenv:Body>' +
' <ndf:NDFDgenByDayLatLonList soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
' <listLatLon xsi:type="dwml:listLatLonType" xmlns:dwml="http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd">35.4,-97.6</listLatLon>' +
' <startDate xsi:type="xsd:date">2012-06-27</startDate>' +
' <numDays xsi:type="xsd:integer">3</numDays>' +
' <Unit xsi:type="dwml:unitType" xmlns:dwml="http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd">e</Unit>' +
' <format xsi:type="dwml:formatType" xmlns:dwml="http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd">24 hourly</format>' +
' </ndf:NDFDgenByDayLatLonList>' +
' </soapenv:Body>' +
'</soapenv:Envelope>';
xhr.send( soapEnv );
}
【问题讨论】:
-
这里是正确答案[去这里][1] [1]:stackoverflow.com/questions/14495403/…
-
如果这个问题已经解决了,我很高兴听到解决方案...
标签: android web-services cordova