java.lang.String不能转换为java.io.InputStream

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. 
+0

什么是'$ content'的类型? – 2010-11-13 15:23:43

+0

@evan - 请参阅edit1 – siliconpi 2010-11-13 15:31:13

+2

看起来像Java代码,而不是PHP,是问题所在。 Java可能期望一个Stream而不是一个字符串。你可以发表解析这个数组的Java片吗? – 2010-11-13 15:36:36

所述阵列中的第二个参数是字符串类型,由于输出类型为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的位置:

http://php-java-bridge.sourceforge.net/pjb/installation.php

+0

Hi @evan - 你确定吗?我不想安装/设置任何一个功能。有没有更好的办法? (请参阅编辑2) – siliconpi 2010-11-13 16:27:15

+0

您可以尝试从'fopen()'传递值,并查看Java是否识别格式。我不确定这是否会奏效。 – 2010-11-13 16:29:52