gSoap: Как установить или изменить куки на клиенте в Qt? - PullRequest
0 голосов
/ 19 января 2012

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

TerminalControllerBinding soapObj;
soap_init1(soapObj.soap, SOAP_C_UTFSTRING);
soapObj.endpoint = "http://192.168.*.*/path/to/service";

ns1__getTemplatesResponse *response = new ns1__getTemplatesResponse;

std::string auth_res = "";
soapObj.ns1__auth("user", "password", auth_res);

QString sessid = QString::fromStdString(auth_res);

qDebug() << sessid;

soapObj.soap->cookies = soap_cookie(soapObj.soap, "sessid", sessid.toAscii().data(), ".");

Сервер не получает cookie "sessid"

1 Ответ

1 голос
/ 19 января 2012

Меня немного смущает код, который вы разместили: вы выделяете память для ns1__getTemplatesResponse, затем делаете какие-то явно не связанные вещи;на самом деле вы не ссылаетесь на это вообще.Более того, soap_cookie - это структура, а soap->cookies - это в основном список.Так что нет никакой магии, которая передает куки на сервер здесь.

Я думаю, что вы хотите soap_set_cookie.Вы можете найти немного больше информации о клиентских куки здесь , но нет примера кода.Гораздо более полезным, однако, является документация на стороне сервера (обработка файлов cookie не сильно отличается).

Также обратите внимание, что вам нужно либо скомпилировать с -DWITH_COOKIES, либо определить макроссебя в stdsoap.h, если вы еще этого не сделали.

...