在PHP中处理Webservice流

时间:2012-04-11 21:37:59

标签: php web-services streaming wso2

大家好。

我需要使用一个用作文件流的Web服务(它接收文件ID并通过流返回文件)。

然后在PHP中我必须处理这个过程。我一直在寻找解决方法,因为据我所知,PHP中的本机soap客户端没有这些功能。

我找到了处理二进制附件(MTOM)的WSO2(PHP的Web服务框架)。

我还没有对它进行测试,但真正的问题是,根据您的经验,消费具有这些特征的网络服务最聪明的方法是什么?

非常感谢你的时间。

1 个答案:

答案 0 :(得分:2)

WSO2 WSF/PHP使用MTOM进行文件流传输更为复杂,这是其他语言支持的标准。

MTOM使用base64编码您可以在on on上实现的文件,如果您不想使用WSO2

我不确定您为什么要stream请注意,您始终可以打开任何文件stream到目前为止您已拥有该文件的副本,因此我认为这不是最多重要的..关键是将文件safely发送到服务器

使用SoapClient

的示例

客户端

ini_set("soap.wsdl_cache_enabled", "0");
$client=new SoapClient(PATH_TO_WSDL,array('encoding'=>'ISO-8859-1'));
$data = file_get_contents(PATH_TO_FILE);
$ret = $client->recieveFile(base64_encode($data));

服务器

ini_set("soap.wsdl_cache_enabled", "0");

const  PATH_TO_WSDL = "b.php?wsdl" ;
$client=new SoapClient(PATH_TO_WSDL,array('encoding'=>'ISO-8859-1'));
$data = file_get_contents(PATH_TO_FILE);
$ret = $client->recieveFile(base64_encode($data));

请注意,base64会将文件增加33%,建议将文件吐入大块文件的块中