2010-11-13 13 views
1

J'écris un script php qui s'interface avec un client SOAP (qui utilise java en interne).java.lang.String ne peut pas être converti en java.io.InputStream

L'un des appels nécessite que je passe le contenu codé Base64.

Je passe comme ceci:

(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'); 

Mais, je reçois une erreur:

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

Quel est le type de 'content' de $? –

+0

@evan - s'il vous plaît voir edit1 – siliconpi

+2

Il semble que le code Java, pas votre PHP, est le problème. Java peut s'attendre à un flux au lieu d'une chaîne. Pourriez-vous poster le morceau de Java qui analyse ce tableau? –

Répondre

0

Le second paramètre du tableau est de type String, en raison de la sortie type de base64_decode. Cette erreur Java implique qu'elle attend un objet de type InputStream.

Vous devrez peut-être utiliser le Zend PHP Java Bridge comme on le voit ici:

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

afin de convertir cette chaîne à un Java InputStream.

Télécharger Zend Server ici:

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

ou une alternative PHP Java Bridge ici:

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

+0

Bonjour @evan - êtes-vous sûr? Je ne voudrais pas installer/configurer tout cela pour une seule fonctionnalité. Y a-t-il un meilleur moyen? (Voir édition 2 aussi s'il vous plaît) – siliconpi

+0

Vous pouvez essayer de passer la valeur de 'fopen()', et voir si Java reconnaît le format. Je ne suis pas sûr que cela fonctionnera. –