意外回复签名:得到“oasv”,预期“(oasv)”
Posted
技术标签:
【中文标题】意外回复签名:得到“oasv”,预期“(oasv)”【英文标题】:Unexpected reply signature: got "oasv", expected "(oasv)"意外回复签名:得到“oasv”,预期“(oasv)” 【发布时间】:2014-05-19 15:23:47 【问题描述】:使用 C++/QtDBus。 我正在尝试从 DBus 调用中获得回复,该函数描述为:
object, dict PullAll(string targetfile, dict filters).
我注册了(qDBusRegisterMetaType)一个类型定义为:typedef QPair< QDBusObjectPath, QVariantMap > Transfer;
在QDBusPendingCallWatcher
处理程序中我正在做:
QDBusPendingReply<Transfer> reply = *pwatcher;
我得到一个错误:
意外回复签名:得到
"oasv"
,预期"(oasv)"
怎么了? “(oasv)”中的括号是什么?
【问题讨论】:
也许oasv
被包裹在一个数组中?
【参考方案1】:
我认为整个消息需要包装在一个结构中。至少你有正确的签名,否则会得到回应。
arrays: []
dict entries:
structs: ()
我对 QtDbus 不是很熟悉,但是查看 QDbusArgument 类的页面,您可能必须这样做:
argument.beginStructure();
argument << mystruct.objectpath << mystruct.array;
argument.endStructure();
【讨论】:
以上是关于意外回复签名:得到“oasv”,预期“(oasv)”的主要内容,如果未能解决你的问题,请参考以下文章
如何解决“批量更新从更新返回意外的行数;实际行数:0;预期:1”问题?
Stripe webhook 错误:未找到与有效负载的预期签名匹配的签名