用php将类型“string”转换为base64

时间:2012-08-17 13:32:06

标签: php base64 xml-rpc

这是一个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编码数据,所以我的问题是如何使这项工作。

1 个答案:

答案 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);