ID: 30329 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Assigned +Status: Closed Bug Type: SOAP related Operating System: Solaris 9 PHP Version: 5.0.2 Assigned To: dmitry New Comment:
Fixed in CVS HEAD and PHP_5_0. Previous Comments: ------------------------------------------------------------------------ [2004-10-05 15:02:48] [EMAIL PROTECTED] incorrect. The EAServer does respond with HTTP/1.0. And in HTTP/1.0 you can leave out the Content-Length (if unknown), because chunked encoding cannot be used with 1.0 ------------------------------------------------------------------------ [2004-10-05 14:50:22] [EMAIL PROTECTED] I don't think we should add workarounds around other buggy products. This is violating the RFC iirc. ------------------------------------------------------------------------ [2004-10-05 14:45:17] [EMAIL PROTECTED] The problem also sometimes occurs even with HTTP/1.0. After checking this, it seems that EAServer does not send a Content-Length! Can we change this in a way that get_http_body also accepts a zero content-length? ------------------------------------------------------------------------ [2004-10-05 13:57:07] [EMAIL PROTECTED] Description: ------------ I get the error message "Error Fetching http body, No Content-Length, connection closed or chunked data [faultcode]" when try to communicate with Sybase EAServer via SOAP. When redirecting the web services via a Proxy-Plugin in an iPlanet webserver everything works ok. It seems that EAServer sends some bad encoded HTTP body. When changing the SOAP extension code to only support HTTP/1.0, everything works. How about introducing an additional option to SoapClient named "http_version" that can be set to 1.1 or 1.0 (default 1.1). At this time "1.1" is hardcoded into php_http.c. When 1.0 is on, "Connection:" should be assumed as "close". Something other: If the extension CURL is used, why not use CURL for sending SOAP requests? Reproduce code: --------------- <h1>SOAP Test</h1> <?php $ws=new SoapClient("http://ws.pangaea.de:8084/ws/services/WebServices?wsdl",array('trace'=>TRUE)); try { $res=$ws->metadata("10.1594/PANGAEA/206854"); } catch (SoapFault $sf) { echo "<pre>".print_r($sf)."</pre>"; } echo "<h2>Request</h2><pre>".htmlspecialchars($ws->__getLastRequest())."</pre><h2>Response</h2><pre>".htmlspecialchars($ws->__getLastResponse())."</pre>"; echo "<h2>Decoded</h2><pre>"; print_r($res); ?> </pre> Expected result: ---------------- no SoapFault ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30329&edit=1