php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #36749 'Error Fetching http body' when using HTTP Proxy
Submitted: 2006-03-15 20:00 UTC Modified: 2006-03-20 13:02 UTC
From: robertg2 at hope dot ac dot uk Assigned: dmitry (profile)
Status: Closed Package: SOAP related
PHP Version: 5.1.2 OS: Windows XP & Suse 10
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: robertg2 at hope dot ac dot uk
New email:
PHP Version: OS:

 

 [2006-03-15 20:00 UTC] robertg2 at hope dot ac dot uk
Description:
------------
When attempting to use an Amazon web service with our HTTP proxy server I receive the SoapFault exception: 

"[HTTP] Error Fetching http body, No Content-Length, connection closed or chunked data"

When I go direct to the web service, i.e. do not use the proxy server, I do not receive such an exception and instead receive a valid dataset from Amazon.

Reproduce code:
---------------
$params = array('AWSAccessKeyId' => ANAMAZONACCESSKEY, 'Request' => array('IdType' => 'ASIN', 'ItemId' => array('1565924878'), 'ResponseGroup' => array('ItemAttributes')));
$client = new SoapClient("http://webservices.amazon.com/AWSECommerceService/2006-02-15/UK/AWSECommerceService.wsdl", array('proxy_host' => "172.16.0.2", 'proxy_port' => 8080));
$client->__soapCall('ItemLookup', array($params));


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-03-15 20:04 UTC] robertg2 at hope dot ac dot uk
I forgot to mention that other SOAP clients using the same SOAP extension on the same box with the same HTTP proxy server work!
 [2006-03-16 08:40 UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.1-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.1-win32-latest.zip


 [2006-03-16 13:20 UTC] robertg2 at hope dot ac dot uk
Tried the Windows snapshot but the behaviour remains the same.  Below is the amazon server's response to the soapCall - I've just included the HTTP headers as bugs.php.net complains about spam when I try to paste the whole transmission.

Please note that the HTTP proxy in question is Novell Bordermanager.

[From Req: POST http://soap.amazon.co.uk:80/onca/soap?Service=AWSECommerceService HTTP/1.1]
HTTP/1.1 200 OK
Date: Thu, 16 Mar 2006 12:03:46 GMT
Server: Server
x-amz-id-1: 186E30BANSXGCJBQR9WQ
x-amz-id-2: z8a87t9KGWDEOYfe05tzt+5e06YHAlwFdaMdZTghHHk=
Content-Type: text/xml; charset=UTF-8
Proxy-Connection: close
Age: 0
 [2006-03-18 20:42 UTC] tony2001@php.net
Wait.. so other PHP scripts using different web-service providers work fine on the same host using the same proxy?
 [2006-03-18 20:56 UTC] robertg2 at hope dot ac dot uk
That is correct.  

I don't pretend to have a full grasp of the problem, but may I suggest/speculate/guess that those web services that work through the proxy for me either use chunked data or specify a value in the Content-length header in their response(s).
 [2006-03-18 21:10 UTC] tony2001@php.net
How do I know that? If you can check it out - please do it and tell us.
 [2006-03-18 22:12 UTC] robertg2 at hope dot ac dot uk
Checked it out - the other services contain a 'Content-Length' HTTP header in the response to the soapcalls.  The amazon.com ItemLookup service referred to in this report does not.
 [2006-03-18 22:30 UTC] tony2001@php.net
Dmitry, please take a look at it.
 [2006-03-19 15:31 UTC] robertg2 at hope dot ac dot uk
Using a default install of Squid 2.5STABLE10-5 instead of Novell BorderManager for the proxy makes the SoapFault disappear.  The only real difference in the response from Squid is the fact that it is HTTP/1.0.

Using a default install of tinyproxy 1.6.3 - http://tinyproxy.sourceforge.net/ - makes the SoapFault reappear.  The response from tinyproxy is in HTTP/1.1, like BorderManager's.

So... the rule so far is: if PHP Soap is set to use a web proxy, and the proxy returns a response of type HTTP/1.1 with no Content-Length header, this SoapFault will occur.
 [2006-03-20 11:38 UTC] dmitry@php.net
Fixed in CVS HEAD and PHP_5_1.
Please verify with Novell Bordermanager.
 [2006-03-20 13:02 UTC] robertg2 at hope dot ac dot uk
Latest snapshot tested and working with Novell Bordermanager.

Quick work, thanks!
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 21:01:27 2024 UTC