java.lang.String不能转换为java.io.InputStream
我正在写一个与SOAP客户端(内部使用java)接口的php脚本。java.lang.String不能转换为java.io.InputStream
其中一个调用要求我传递Base64编码的内容。
我传递这样的:
(Edit 1)
$content=file_get_contents('fileX');
fileX is a binary file which has been uploaded via POST and saved successfully in /tmp.
It is ~600kb in binary form.
$args[]=array('name'=>'content', 'value'=>base64_encode($content), 'type'=>'Base64Binary');
但是,我发现了一个错误:
java.lang.String cannot be cast to java.io.InputStream
(Edit2)
The documentation of the third party application says exactly:
Parameter Description Type
filename The name of the presentation file String
including the file extension.
content The content of the presentation file Base64Binary
encoded in Base64 scheme.
所述阵列中的第二个参数是字符串类型,由于输出类型为base64_decode
。 Java错误意味着它期待InputStream类型的对象。
您可能需要使用Zend PHP的Java大桥在这里看到:
https://fosswiki.liip.ch/display/~chregu/Convert+PHP+String+to+a+Java+InputStream
以该字符串转换为一个Java的InputStream。
下载Zend服务器的位置:
http://www.zend.com/en/products/server/downloads
或替代PHP Java Bridge的位置:
Hi @evan - 你确定吗?我不想安装/设置任何一个功能。有没有更好的办法? (请参阅编辑2) – siliconpi 2010-11-13 16:27:15
您可以尝试从'fopen()'传递值,并查看Java是否识别格式。我不确定这是否会奏效。 – 2010-11-13 16:29:52
什么是'$ content'的类型? – 2010-11-13 15:23:43
@evan - 请参阅edit1 – siliconpi 2010-11-13 15:31:13
看起来像Java代码,而不是PHP,是问题所在。 Java可能期望一个Stream而不是一个字符串。你可以发表解析这个数组的Java片吗? – 2010-11-13 15:36:36