0

这是一个共同的 xmlrpc 问题。我有一串来自 .wav 文件的数据。我读入了文件,file_get_contents()然后我必须将该信息提交给 xmlrpc 服务器(我没有创建)。它采用 base64 格式的 .wav 音频数据。我试过使用base64_encode(),但这也返回“字符串”类型。我想也许This php guide onxmlrpc_set_type会有所帮助,但这会返回一个对象,其中包含一个包含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 编码的数据,所以我的问题是如何使它工作。

4

1 回答 1

0

xmlrpc_set_type函数可用于在 XML-RPC 请求中将值“标记”为特定类型(base64 或 datetime)。它返回一个布尔值,指示操作是否成功。

基本上,发生的情况是该值与其类型一起包装在标准 PHP 类对象中,并且作为引用传递的变量xmlrpc_set_type保存该对象而不是原始原始值。

调用xmlrpc_encode_request时,为了声明值类型,先前作为引用传递的相同变量xmlrpc_set_type应嵌入$params作为第二个参数传递的数组中。

请注意,这些功能仍被认为是实验性的,应谨慎使用。

例子:

<?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); 
于 2012-09-08T17:37:10.110 回答