gSoap:如何在Qt中设置或更改客户端上的cookie

gSoap: How to set or change cookies on client in Qt?

本文关键字:客户端 cookie 设置 Qt gSoap      更新时间:2023-10-16

我将使用下一个代码在服务器上按服务进行授权,并使用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"sessiond"

我对你发布的代码有点困惑:你为ns1__getTemplatesResponse分配内存,然后做一些明显不相关的事情;事实上,你根本没有再引用它。此外,soap_cookie是一个结构体,soap->cookies基本上是一个列表。因此,这里没有将cookie传输到服务器的魔法。

我想你想要的是soap_set_cookie。您可以在这里找到更多关于客户端cookie的信息,但没有任何示例代码。然而,更有用的实际上是服务器端文档(cookie的处理没有太大区别)。

还要注意,您需要使用-DWITH_COOKIES进行编译,或者在stdsoap.h中自己定义宏(如果您还没有这样做的话)。