我有以下问题:
我有一个Foo类,它封装了一个Web-api。该界面具有以下功能:
Foo::addItem(QString id)
Foo::updateItem(QString id)
这两个函数都使用相同的URL发起QNetworkRequest,但是数据的用法不同。
因此,我需要在插槽函数 Foo::replyFinished(QNetworkReply * wf_reply)中知道QNetworkRequest的来源。
您将如何解决?
我可以使用变量来存储QNetworkRequest的地址,以便稍后将其与wf_reply-> request()进行比较,但对我来说这似乎是一个hack。考虑到您可以在第一次执行ReplyFinished()之前调用addItem()或updateItem()一百次。
最好的方法是在包含函数名称或ID的QNetworkRequest中添加一个字符串或整数。
最佳答案
在您的原始QNetworkRequest
中,您可以使用
setAttribute(Attribute code, const QVariant & value)
Attribute
是一个枚举,仅在这种情况下有保留代码QNetworkRequest::User
。 (请参阅:Attribute)在您的
QNetworkReply
中,您可以将QNetworkRequest
与request()
一起拉出,然后从此处使用Attribute
获得attribute()
有点破解,但我认为它应该可以工作。
关于c++ - 获取在QFinished()中启动QNetworkRequest的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5364777/