Sudzc с iOS 5 и ARC

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

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

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

Ответ 1

В моем случае (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];

Как-то соответствующая функция выполняет поиск корневого элемента с именем "Тело". После проверки мыльного конверта легко видеть, что имя корневого элемента - "мыло: тело".

Ответ 2

Мой webService был создан на Java с помощью Axis Eclipse.

ДЛЯ ARC Я использую: "soapenv:Body"

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

#import "Soap.h"
#import "SoapObject.h"

Ответ 3

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

Ответ 4

В моем случае это была веб-служба .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