ID: 34641 User updated by: dev at lechat dot org Reported By: dev at lechat dot org -Status: Feedback +Status: Open Bug Type: SOAP related Operating System: XP PHP Version: 5.1.0RC1 New Comment:
As requested tried with last http://snaps.php.net/win32/php5-win32-latest.zip CVS Snaphshot, and soapclient base64binary auto decode is correct (-; No more manual decode is necessary. Thanks you for your work and quick reply. Thierry Previous Comments: ------------------------------------------------------------------------ [2005-09-26 10:52:23] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-09-26 10:21:05] dev at lechat dot org Description: ------------ With 5.0.5, a SOAP client getting a "base64Binary" datatype is not performing the appropriate decoding. Since Bug #32139 (base64binary encode/decode) this issue was marked fixed. With 5.1.0RC1, autodecode is present, but returns a wrong decode. - PHP 5.0.5 : -> SoapClient doesn't autodecode base64binary, it returns a base64 encoded string. -> base64_decode() did a wrong decode. -> GET EXPECTED results if use of mb_convert_encoding(). - PHP 5.1.0RC1 : -> SoapClient autodecode base64binary, -> but return a wrong decoded string base64binary encoded string to be decode is not short, so I don't put it in this report. Request if necessary. Reproduce code: --------------- header('Content-Type: text/xml; charset=UTF-8'); $client = new SoapClient( "http://192.168.72.75/MSWCONFIGWEBSERVICE/Deployment.asmx?WSDL", array('trace' => 1) ); $param = array( 'schemaVersion' => 1, 'user' => array( 'Username' => "myuser", 'Password' => "mypassword", 'CultureID' => 1033)); $result=$client->LoadConfiguration($param); //PHP 5.0.5 : SoapClient doesn't autodecode base64binary // return a base64 encoded string : //PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PENv bmZpZ3VyYXRpb24+PEtleSBuYW1lPSJ..... //PHP 5.0.5 : base64_decode() did a wrong decode (*) $conf=base64_decode($result->LoadConfigurationResult->Configuration); echo $conf; //PHP 5.0.5 : GET EXPECTED results if use of mb_convert_encoding() $conf=mb_convert_encoding($result->LoadConfigurationResult->Configuration,"UTF-8","BASE64"); echo $conf; //PHP 5.1.0RC1 : SoapClient autodecode base64binary, but return a wrong decoded string ( same as *) echo $result->LoadConfigurationResult->Configuration; Expected result: ---------------- <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Configuration> <Key name="CharacterSetAliases" default=""> <PropertyList duplicates="true"> <Property name="iso-646" type="string" value="us-ascii" /> </PropertyList> </Key> ... Actual result: -------------- This is the content of $result->LoadConfigurationResult->Configuration : <?xml version="1.0" encoding="UTF-8" standalone="no"?><Coù¹¥ÕÉ Ñ¥½¸øñ-ä¹ µô ¡ É ÑÉMѱ¥ ÍÌ Õ±ÐôøñCç&÷W'GÆ7BGWÆ6FW3Ò'G'VR#ãÅ&÷W'GæÖS ... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34641&edit=1
