我们正在使用PhoneGap框架开发一个小型联系人存储应用程序。我们有一个Web服务来执行创建,更新,读取和删除联系人的操作。我们使用以下代码发出SOAP请求来创建联系人。我们正在使用jQuery和jquery mobile http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.js。以下代码适用于iPhone模拟器和iPhone。但我们甚至没有在Android和Android模拟器上获得响应。非常感谢您的帮助。
var settings = {requestType:"soap1.1",
error:function(XMLHttpRequest, textStatus, errorThrown){
throw XMLHttpRequest.responseText;
}};
var oBuffer = new Array();
settings.requestType = "soap1.1";
settings.methodType = "POST";
settings.contentType = "text/xml";
settings.url = "http://example.com/checkdatpriceservice.asmx";
settings.dataType = "text/xml";
settings.nameSpace = "http://tempuri.org/";
settings.methodName = "VerifyUser";
oBuffer.push('<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">');
oBuffer.push("<soap:Body>");
oBuffer.push('<VerifyUser xmlns="http://tempuri.org/">');
oBuffer.push('<email_id>abcd@example.com</email_id>');
oBuffer.push('<password>user123</password>');
oBuffer.push("</VerifyUser>");
oBuffer.push("</soap:Body>");
oBuffer.push("</soap:Envelope>");
settings.requestData = oBuffer.join("");
alert("requestData:" + settings.requestData);
$.ajax({
type: settings.methodType,
cache: false,
url: settings.url,
data: settings.requestData,
contentType: settings.contentType,
dataType: settings.dataType,
error: function(status){ alert("An error occurred in processing your request");},
success: function(data, testStatus){
alert('data = ' + data);
$('#testp').html(data);
},
beforeSend: function(XMLHttpRequest){
if (settings.requestType == "soap1.1" || settings.requestType== "soap1.2")
XMLHttpRequest.setRequestHeader("SOAPAction",settings.nameSpace + settings.methodName);
XMLHttpRequest.setRequestHeader("Content-Length",settings.requestData.length);
XMLHttpRequest.setRequestHeader("Connection", "close");
}
});
答案 0 :(得分:0)
我也有同样的问题。 当我试图在eclipse上运行index.html时,一切正常。 但是当试图在模拟器上运行时,没有响应数据。 我发现即使响应数据的长度也是零。
如果有人可以发布解决方案或者一个关于phonegap如何运行带有soap xml请求并以xml提供响应的Web服务的小例子,那就太棒了。
答案 1 :(得分:0)
我尝试运行logcat,但是当点击运行Web服务的按钮时,我没有找到任何“Web”字样。
答案 2 :(得分:0)
尝试使用settings.dataType =“xml”(而不是“text / xml”)。
“text / xml”不是$ .ajax调用的有效数据类型,因此智能猜测可能已经在您的iphone中运行而不是在您的Android sim中。