На основании сравнения этого запроса с тем, что у вас есть в ваш вопрос о ручном решении , похоже, у вас здесь возникают проблемы с пространством имен. Сгенерированный здесь запрос SOAP применяет пространство имен http://org/ (через идентификатор CatalogoSvc) к элементу «name»:
<CatalogoSvc:hello>
<CatalogoSvc:name>David</CatalogoSvc:name>
</CatalogoSvc:hello>
В ручном сценарии, где вы заставили это работать, пространство имен http://org/ применяется к окружающему элементу "привет", но не к элементу "имя":
<ns2:hello xmlns:ns2="http://org/>
<name>david</name>
</ns2:hello>
Основываясь на этом наблюдении, я бы сделал вывод, что ваша служба не ожидает применения пространства имен к элементу имени, поэтому не находит этот параметр при отправке с пространством имен.
Чтобы решить эту проблему, вам необходимо:
- Выясните, как сообщить генерации заглушки клиента SOAP НЕ применять пространство имен к вашему параметру, или
- Обновите ваш сервис, чтобы он ожидал элемент name в пространстве имен.
Поскольку код на стороне клиента предположительно генерируется из WSDL службы, я подозреваю, что код Objective C делает это правильно, а код службы - неправильно, но это всего лишь подозрение. В любом случае вам нужно найти способ заставить клиента и сервер "согласиться"