2010-11-16 18 views
0

J'utilise NuSOAP en PHP et utilise un service web construit en Java.Passage du type base64Binary dans nusoap

Lorsque vous appelez NuSOAP, je passe cet argument:

$args[]=array('name'=>'content', 'value'=>base64_encode($content), 'type'=>'Base64Binary'); 

Cependant, lors de l'examen du SOAPXML, je vois ce qui suit:

<content xsi:type="xsd:string">PD94bWwgdmVywIiBlbmNvZ....cmQ+DQoNCg==</content> 
        Note:^^^^^^ 

En nusoap.php, je vois ce qui suit:

/* 
$Id: nusoap.php,v 1.123 2010/04/26 20:15:08 snichol Exp $ 

NuSOAP - Web Services Toolkit for PHP 
... 
*/ 
... 
    /** 
    * XML Schema types in an array of uri => (array of xml type => php type) 
    * is this legacy yet? 
    * no, this is used by the nusoap_xmlschema class to verify type => namespace mappings. 
    * @var  array 
    * @access public 
    */ 
    var $typemap = array(
    'http://www.w3.org/2001/XMLSchema' => array(
     'string'=>'string','boolean'=>'boolean',...,'base64Binary'=>'string', ...), 
    'http://www.w3.org/2000/10/XMLSchema' => array(...,'base64Binary'=>'string','base64'=>'string','ur-type'=>'array'), 
    'http://www.w3.org/1999/XMLSchema' => array(...,'base64Binary'=>'string','base64'=>'string','ur-type'=>'array'), 
    'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'), 
    'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'), 
    'http://xml.apache.org/xml-soap' => array('Map') 
    ); 

Notez que dans tous les cas,

'base64Binary'=>'string' 

Ce qui est probablement pourquoi je suis confronté à cette erreur! Pourquoi cette conversion de type en cours et est-il sûr pour moi de modifier ce fichier et faire:

'base64Binary'=>'base64Binary' 

Répondre

0

Le php fonctionnalité base64_encode renvoie une chaîne. Nusoap lit donc le type correctement. essayez de référencer le contenu sans l'encoder en premier.

$args[]=array('name'=>'content', 'value'=>$content, 'type'=>'Base64Binary'); 

C.

+0

salut, qui était une solution intéressante, mais il ne marchait pas ... Je reçois toujours la même erreur! – siliconpi

+0

(idée intéressante est ce que je voulais dire) – siliconpi