Sudzc с iOS 5 и ARC - PullRequest
       6

Sudzc с iOS 5 и ARC

10 голосов
/ 27 декабря 2011

Я пытался заставить веб-сервисы работать с помощью Sudzc.Всякий раз, когда я конвертирую свой WSDL в obj-c без автоматического подсчета ссылок, он работает просто отлично.Проблема в том, что мы сейчас создаем все наши приложения в iOS 5, и весь наш код использует ARC.Sudzc теперь также позволяет вам создавать пакет с включенным ARC, но когда я запускаю этот код, он всегда возвращает ноль.

Я пытался отладить код Sudzc, и он получает правильный ответ XML от службы.Где-то что-то теряется в переводе.Я попытался преобразовать работающий код Sudzc без ARC в код с включенным ARC, но как только я исправил все ошибки, он снова возвращает ноль.

Кто-нибудь сталкивался с этим и знает, что происходит не так?Это избавило бы меня от лишней необходимости отлаживать весь код Sudzc самостоятельно.

Ответы [ 4 ]

16 голосов
/ 02 января 2012

В моем случае (SUDZC с ARC для IOS) я заменил следующий код в файле SoapRequest.m;

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"Body"] childAtIndex:0];

на

CXMLNode* element = [[Soap getNode: [doc rootElement] withName:@"soap:Body"] childAtIndex:0];

Каким-то образом соответствующая функцияпоиск корневого элемента с именем «Body».После проверки мыльного конверта легко увидеть, что корневой элемент называется «soap: Body».

1 голос
/ 23 мая 2012

Мой веб-сервис был создан на Java с помощью Axis Eclipse.

для дуги я использую: "soapenv:Body"

А в файл SoapObject.m добавляю

#import "Soap.h"
#import "SoapObject.h"
0 голосов
/ 07 августа 2012

В моем случае это был веб-сервис .Net (WCF), и мне пришлось использовать s: Body: Обнаружено при печати документа CXML:

CXMLNode* test = [doc rootElement];
NSLog(@"%@",test);

Вот я и получил это:

<CXMLElement 0x68c1a50 [0x68c1b10] s:Envelope <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><**s:Body**><GetUserIDResponse xmlns="http://tempuri.org/"><GetUserIDResult>8</GetUserIDResult></GetUserIDResponse></s:Body></s:Envelope>>

Благодаря предыдущим сообщениям я смог это выяснить и снова опубликовал полный ответ в своем блоге: http://www.dailycode.info/Blog/post/2012/08/07/SUDZC-webservices-always-return-0-(WCF-web-service-and-IOS-client).aspx

0 голосов
/ 30 апреля 2012

В моем случае "env: Body" работал.Проверьте ваш возврат XML (распечатав) и замените соответствующим образом

...