【问题标题】:Android SOAP WCF Service Call - Partial responseAndroid SOAP WCF 服务调用 - 部分响应
【发布时间】:2011-01-18 06:46:54
【问题描述】:

调用基于 .NET 4.0 Soap 的 WCF 服务。调用过程中没有异常,代码工作正常。
问题是soap resposne只包含起始xml标签和它的结束标签,但没有正文。
也许解析XML或解析有问题我们是否需要基于 REST 的 WCF 服务进行通信。返回的 XML 也非常大(~50-150kb)

这是我正在使用的代码:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapObject param = new SoapObject(NAMESPACE, METHOD_NAME);

request.addProperty("CompanyID",CompanyId);
request.addProperty(METHOD_NAME, param);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);

androidHttpTransport.call(SOAP_ACTION,envelope);
response = (SoapObject) envelope.getResponse(); //Only starting xml tag is returned

在调试器中看到的响应对象包含通常的 SoapObject 属性,并且向下钻取包含 SoapPrimitive "" 内的值对象。但是 Web 服务在此元素内返回大量数据。那是哪里?

更新:在返回一个小的 xml 字符串时,使用 KSOAP 的 android 应用程序正在获取完整的 xml,并能够使用上述代码对其进行解析。

编辑:WCF Web 服务方法

public string GetOffersString(string companyID)
        {
            DataTable dtGetTopOffers;
            dtGetTopOffers = SprocWrapper.PROC_GETTOPOFFERS(companyID);
            dtGetTopOffers.TableName = "GETTOPOFFERS";
            XElement xGetTopOffers = Common.SerializeDataTable(dtGetTopOffers);            
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xGetTopOffers.Value);
            return doc.InnerXml;
}

【问题讨论】:

    标签: android wcf soap


    【解决方案1】:

    参数名称输入不正确。更改以下行

    request.addProperty("CompanyID",CompanyId);
    

    request.addProperty("companyID",CompanyId);
    

    修复了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      相关资源
      最近更新 更多