使用jQuery的PhoneGap Android Web服务响应尚未到来

时间:2011-01-28 14:38:26

标签: android web-services cordova

我们正在使用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");
   }
 });

3 个答案:

答案 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中。