2013-04-10 138 views
0

我想通过xmlrpc作为base64编码的字符串发送文件。编码文件为base64字符串在QT与XMLRPC

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)。

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

我才意识到我需要使用xmlrpc_c :: value_bytestring()代替。如何将文件转换为C++中的字节字符串?我已经有了一个ByteArray。

我在这里损失..

+0

为什么要将JPG图片转换为字符串? – duDE 2013-04-10 12:54:32

+0

因为我想通过XML-RPC发送它。我需要发送它为base64 ..我不知道如何做到这一点。 – 2013-04-10 14:38:21

+0

'xmlrpc_c :: value_bytestring()'的签名是什么?它是'xmlrpc_c :: value_bytestring(const char *)' – warunanc 2013-04-11 12:06:39

回答

0

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

转换您base64字符串中的一个const 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"));