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 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

Pull Requests

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: Sat Dec 21 18:01:29 2024 UTC