Вызов службы WCF на основе мыла .NET 4.0. Во время вызова не возникает никаких исключений, и код работает нормально.
Проблема в том, что мыло resposne содержит только начальный тег xml и его конечный тег, но не содержит тела.
Может быть, есть какая-то проблема с анализом XML или нам нужна служба WCF на основе REST для связи. Кроме того, возвращаемый 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 "". Но веб-сервис возвращает много данных внутри этого элемента. Где это?
ОБНОВЛЕНИЕ: При возврате небольшой строки XML приложение для Android, использующее KSOAP, получает полный XML и может проанализировать его с помощью приведенного выше кода.
РЕДАКТИРОВАТЬ: Метод веб-службы WCF
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;
}