这是一个xmlrpc问题。我有一个来自.wav文件的数据字符串。我用file_get_contents()
读取了文件,然后我必须将该信息提交给xmlrpc服务器(我没有创建)。它需要base64中的.wav音频数据。我尝试使用base64_encode()
,但也返回“字符串”类型。我认为xmlrpc_set_type
上的This php guide可能会有所帮助,但这会返回一个包含一个包含base64编码字符串的数组的对象。
有没有办法将我正在使用的字符串设置为base64类型?
这是我到目前为止所做的,即创建错误:
$data = base64_encode(file_get_contents('myfile.wav', NULL, NULL, 44));
$request = xmlrpc_encode_request('service',array('AudioData'=>$data));
我也试过这个:
$data = file_get_contents('myfile.wav', NULL, NULL, 44);
$request = xmlrpc_encode_request('service',array('AudioData'=>xmlrpc_set_type($data, 'base64')));
这是我得到的回复:
["faultCode"]=> int(0) ["faultString"]=> string(155) "request contains string value where base64 expected
我知道base64不是一个类型。显然我使用的服务器不会除了一串base64编码数据,所以我的问题是如何使这项工作。
答案 0 :(得分:0)
xmlrpc_set_type
函数可用于将值“标记”为XML-RPC请求中的特定类型(base64或datetime)。它返回一个布尔值,指示操作是否成功。
基本上,会发生的是,值包含在标准PHP类对象及其类型中,作为对xmlrpc_set_type
的引用传递的变量保存此对象而不是原始原始值。
调用xmlrpc_encode_request
时,先前作为对xmlrpc_set_type
的引用传递的相同变量,以声明值类型,应该嵌入作为第二个参数传递的$params
数组中。 / p>
请注意,这些功能仍被视为实验性功能,应谨慎使用。
示例:
<?php
$method = 'app.service';
// $value contains raw content
xmlrpc_set_type($value, 'base64');
// $request contains base64 encoded content
$request = xmlrpc_encode_request($method, array($value);