0

我正在尝试通过 xmlrpc 将文件作为 base64 编码字符串发送。

QFile sourceFile("/home/alexander/test.jpg");              

QByteArray srcRawData = sourceFile.readAll();               
QByteArray base64Encoded = srcRawData.toBase64();                        
std::string strTest(base64Encoded);

xmlrpc_c::paramList sampleAddParms;                        
sampleAddParms.add(xmlrpc_c::value_string("113957571"));   
sampleAddParms.add(xmlrpc_c::value_string(strTest));        
sampleAddParms.add(xmlrpc_c::value_string("test.jpg"));     

当我将此发送到我的服务器时,我得到:客户端抛出错误:RPC 响应指示失败。错误的参数类型(ap_adddocument):参数数据的预期 base64,得到(Python)。

这是类定义 o xmlrpc_c::value_* http://xmlrpcpp.sourceforge.net/doc/classXmlRpc_1_1XmlRpcValue.html

我刚刚意识到我需要改用 xmlrpc_c::value_bytestring() 。如何在 C++ 中将文件转换为字节串?我已经有一个 ByteArray 了。

我在这里不知所措..

4

1 回答 1

0

查看您的代码,您似乎可以使用xmlrpc_c::value_string()

将您的base64字符串转换为 aconst char*并尝试。以下代码应该可以工作。但是您的问题仍然没有足够的细节。

QFile sourceFile("/home/alexander/test.jpg");              
QByteArray base64Encoded  = sourceFile.readAll().toBase64();                                      
const char* b64Enc = QString::fromLatin1(base64Encoded).toStdString().c_str();

xmlrpc_c::paramList sampleAddParms;                        
sampleAddParms.add(xmlrpc_c::value_string("113957571"));   
sampleAddParms.add(xmlrpc_c::value_string(b64Enc));        
sampleAddParms.add(xmlrpc_c::value_string("test.jpg"));  
于 2013-04-11T12:26:02.387 回答