Я борюсь с привязкой параметров возврата gsoap. У меня есть функция, которая возвращает char**
который составлен так: {char*, ..., char*, NULL}
, Я хочу, чтобы сгенерированный веб-сервис мог передавать и обрабатывать несколько строк в одном параметре. Gsoap, однако, генерирует только:
<element name="retVal" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
Я хотел бы, чтобы он возвращал массив строк, а не одну строку.
Если я понимаю ваш вопрос
Вы можете разработать свою собственную функцию, которая вызывает функцию gSoap, чтобы получить возвращенную строку из функции gSoap, затем разделить строку gSoap на подстроки и поместить их в массив, а затем вернуть свой массив строк.
Я нашел ответ в документация. Оказывается, мне пришлось создать структуру, которая будет использоваться для возврата значения и присвоения имен переменным соответствующим образом. В моем случае:
struct ns_cl_get_indexes_retVal {
int __sizeIndex;
char** index;
};
и функция в заголовке WS-base:
int ns__cl_get_indexes ( int32_t db_id, struct ns_cl_get_indexes_retVal& retVal );
Что привело к правильной генерации XML, как видно из wsdl:
<element name="index" type="xsd:string" minOccurs="0" maxOccurs="unbounded" nillable="true"/>