我正在将libxmlrpc实现到C ++项目中,但无论如何,我的RPC服务器返回了一个包含52个成员结构的结构。
我不知道键是什么,因为它们是不透明的引用,所以我不能依赖它们。
如何迭代结构,我原以为使用以下代码:
XmlRpcValue param_array = XmlRpcValue::makeArray();
param_array.arrayAppendItem(XmlRpcValue::makeString(this->sessionKey));
param_array.arrayAppendItem(XmlRpcValue::makeString("petabytes"));
XmlRpcValue result = ServerCall("Charter.getDataWarehouse.storage.capacity", param_array, url);
int index = 0;
while(index < result.structSize())
{
XmlRpcValue Data = result.getStruct();
//Would have thought it would work with this ;( shit documentation libxmlrpc has, grrrr
//Data.structGetKeyAndValue(index);
//This for example works, because I know the opaque reference, but in real life I wont
cout << Data.structGetValue("OpaqueRef:d4e60db6-2271-b0ac-d362-1b51220980af").structSize() << endl;
index++;
}
但是,Data.structGetKeyAndValue(index)错误包含:
no matching function for call to 'XmlRpcValue::structGetKeyAndValue(int&)
哪个好,我明白这不是xmlrpcvalue
的公众(我认为它不是公共成员函数),但是我找不到任何可以让我这样做的东西。
任何人都有这方面的经验吗?
答案 0 :(得分:0)
一些快速谷歌搜索似乎表明您的函数签名错误:
void XmlRpcValue::structGetKeyAndValue(const int index, std::string& out_key, XmlRpcValue& out_value);