Android SOAP WCF Service Call - Частичный ответ - PullRequest
0 голосов
/ 18 января 2011

Вызов службы 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;
}

1 Ответ

0 голосов
/ 18 января 2011

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

request.addProperty("CompanyID",CompanyId);

Для

request.addProperty("companyID",CompanyId);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...