Проблемы с Sudz-c для iOS, отсутствие пространства имен

Я работаю над приложением, которое использует веб-сервис. Это частная служба, поэтому я не могу публиковать здесь WSDL или сгенерированный код, так что это скорее вопрос общего совета, а не конкретной информации.

Я кормил WSDL в Sudz-c. Изначально WSDL имел некоторые импорта XSD, которые sudz-c пропустил, поэтому я скопировал их в раздел типов WSDL.

Я использую сгенерированный код для отправки запроса в службу, но обнаружил, что в запросе отсутствует пространство имен для объектов сложного типа, которые я скопировал в раздел типов WSDL.

Опять же, я знаю, что это очень общая информация, но если у кого-то еще была похожая проблема с Sudz, было бы здорово получить ваш совет.

3 ответа

Решение

Не смог найти ответ на этот вопрос, поэтому в конечном итоге просто кодировал сообщения веб-службы:(

Я знаю, что поток закончился, но я нашел решение этой проблемы. Если в WSDL включены / импортированы внешние XSD, то YES, вы правы, если эти типы XSD скопированы в WSDL (т. Е. Напрямую вставляете его в WSDL, а не включаете /import). Сгенерированный код практически идеален в любом смысле, так как он генерирует типы и для типов XSD... но вы можете получить ОШИБКУ (та же ошибка в нескольких файлах).. которая будет отсутствующим BASE-классом из немногих типы запрос / ответ.. после анализа кода я понял, что это отсутствующее пространство имен - это не что иное, как тот же объект SOAPObject, поэтому я заменил это отсутствующее пространство имен на SOAPObject.h и использовал интерфейс / класс SOAPObject в качестве базового класса. например, в моем случае

#include "SOAP.h"

#include "sudz.h"
@class sudz;

@interface sudzAbstractRequestType : sudz
{
}

(Примечание: "sudz" - это уникальное имя, которое вы используете при генерации кода с использованием сайта / проекта SUDZ-C, в вашем случае оно может быть другим). Я изменил код на (везде в проекте, где встречалась эта ошибка):

#include "SOAP.h"

#include "SOAPObject.h"
@class SOAPObject;
//#include "sudz.h"
//@class sudz;

@interface sudzAbstractRequestType : SOAPObject//sudz
{
}

Я надеюсь, что это поможет другим... Я застрял на несколько дней, но потом все заработало нормально.. Счастливого кодирования:)

Одна вещь, которую вы можете попробовать, это убедиться, что вы исправили свое пространство имен в самом сервисе.

вот ссылка поможет сделать это:

http://alensiljak.blogspot.com/2009/06/removing-httptempuriorg-namespace-from.html

Другие вопросы по тегам