Я использую NuSOAP в PHP и используя веб-службу, построенную на Java.Passing base64Binary type in nusoap
При вызове NuSOAP, я прохожу этот аргумент:
$args[]=array('name'=>'content', 'value'=>base64_encode($content), 'type'=>'Base64Binary');
Однако при рассмотрении SOAPXML, я вижу следующее:
<content xsi:type="xsd:string">PD94bWwgdmVywIiBlbmNvZ....cmQ+DQoNCg==</content>
Note:^^^^^^
В nusoap.php, я вижу следующее:
/*
$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')
);
Обратите внимание, что во всех случаях,
'base64Binary'=>'string'
Возможно, именно поэтому я столкнулся с этой ошибкой! Почему это преобразование типа происходит, и это безопасно для меня, чтобы изменить этот файл и сделать:
'base64Binary'=>'base64Binary'
привет, это было интересное решение, но он не работал ... Я все еще получаю ту же ошибку! – siliconpi
(интересная идея - это то, что я хотел сказать) – siliconpi