我在服务器上使用下一个代码进行授权,并使用cookie标识来获取其他服务方法。
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”
答案 0 :(得分:1)
我对你发布的代码感到困惑:你为ns1__getTemplatesResponse
分配内存,然后做一些看似无关的东西;事实上你根本不再提及它。此外soap_cookie
是一个结构,soap->cookies
基本上是一个列表。因此,没有魔法可以将cookie传输到服务器。
我认为你想要的是soap_set_cookie
。您可以在客户端cookie here上找到更多信息,但没有任何示例代码。然而,更有用的是server side文档(cookie的处理方式差别不大)。
另请注意,您需要使用-DWITH_COOKIES
进行编译,或者如果您尚未在stdsoap.h
中自行定义宏。