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