2011-01-18 3 views
0

Вызов службы WCF на основе .NET 4.0. Во время разговора нет исключения, и код работает нормально.
Проблема в том, что мыло resposne содержит только начальный тег xml и его конечный тег, но не тело.
Возможно, существует некоторая проблема с анализом XML или нам нужна служба WCF на основе REST для связи. Кроме того, XML вернулся довольно огромный (~ 50-150kb)Android SOAP WCF Call Call - Частичный ответ

Вот что код, который я использую:

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 "". Но веб-служба возвращает много данных внутри этого элемента. Где это?

UPDATE: При возврате маленькой строки xml приложение android с помощью KSOAP получает полный xml и может анализировать его с использованием вышеуказанного кода.

EDIT: метод WCF Web Service

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; 
} 

ответ

0

Имя параметра набралось uncorrectly. Изменение следующей строки

request.addProperty("CompanyID",CompanyId); 

Для

request.addProperty("companyID",CompanyId); 

исправили проблему.