【问题标题】:java.lang.String cannot be cast to java.io.InputStreamjava.lang.String 不能转换为 java.io.InputStream
【发布时间】:2011-05-09 13:29:44
【问题描述】:

我正在编写一个与 SOAP 客户端(内部使用 java)交互的 php 脚本。

其中一个调用要求我传递 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. 

【问题讨论】:

  • $content的类型是什么?
  • @evan - 请参阅edit1
  • 问题似乎是 Java 代码,而不是您的 PHP。 Java 可能需要一个 Stream 而不是一个字符串。你能发布解析这个数组的 Java 代码吗?
  • @evan - 嗨,evan - 实际上,这是一个稳定的第三方应用程序(我无法访问它的源代码)。我做错了什么,但我需要帮助来了解它的坏处。
  • (我需要改变我正在做的事情才能让它工作)

标签: java php string casting base64


【解决方案1】:

由于base64_decode的输出类型,数组中的第二个参数是String类型。该 Java 错误意味着它需要一个 InputStream 类型的对象。

您可能需要使用 Zend PHP Java Bridge,如下所示:

https://fosswiki.liip.ch/display/~chregu/Convert+PHP+String+to+a+Java+InputStream

为了将该 String 转换为 Java InputStream。

在此处下载 Zend 服务器:

http://www.zend.com/en/products/server/downloads

或此处的替代 PHP Java 桥:

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

【讨论】:

  • 嗨@evan - 你确定吗?我不想为了一个功能而安装/设置任何一个。有没有更好的办法? (请参见编辑 2)
  • 您可以尝试从fopen() 传递值,并查看Java 是否能够识别该格式。我不确定这是否可行。
猜你喜欢
  • 2018-02-10
  • 2015-05-18
  • 2011-10-27
  • 2019-10-19
  • 2018-01-23
  • 2014-06-24
  • 1970-01-01
  • 2013-08-27
  • 2018-05-17
相关资源
最近更新 更多