简体   繁体   中英

Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers

I'm trying to output "Hello World" using XML but I'm getting the following exception in my php page:

Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in C:\\wamp\\www\\Web_Service\\SampleXML\\index.php:4 Stack trace:
#0 [internal function]: SoapClient->_ doRequest('<?xml version="...', 'http://localhos...', 'urn:localhost-s...', 1, 0)
#1 [internal function]: SoapClient-> _call('getHelloWorld', Array)
#2 C:\\wamp\\www\\Web_Service\\SampleXML\\index.php(4): SoapClient->getHelloWorld()
#3 {main} thrown in C:\\wamp\\www\\Web_Service\\SampleXML\\index.php on line 4

index.php

<?php
    $client = new SoapClient('service.wsdl');
    $response = $client->getHelloWorld(); 
    echo $response;
?>

service.wsld

<?xml version = '1.0' encoding = 'UTF-8' ?>

<definitions name = "Web Service"
    targetNamespace = 'http://example.org/service'
    xmlns:tns = 'http://example.org/service'
    xmlns:soap = 'http://schemas.xmlsoap.org/wsdl/soap/'
    xmlns:xsd = 'http://www.w3.org/2001/XMLSchema'
    xmlns:soapenc = 'http://schemas.xmlsoap.org/soap/encoding/'
    xmlns:wsdl = 'http://schemas.xmlsoap.org/wsdl/'
    xmlns = 'http://schemas.xmlsoap.org/wsdl/' >

    <!-- Message -->
    <message name='getHelloWorld'>
        <part name='response' type='xsd:string' />
    </message>

    <!-- Operations offered -->
    <portType name = 'PortType'>
        <operation name = 'getHelloWorld'>
                <!-- Target Name Space -->
                <output message = 'tns:getHelloWorld' />
        </operation>
    </portType>

    <!-- Binding Element -->
    <binding name = 'Binding' type = 'tns:PortType'>
        <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http' />
        <operation name='getHelloWorld'>
            <soap:operation soapAction = 'urn:localhost-service#getHelloWorld' />

        <!-- Output -->
        <output>
            <soap:body use='encoded' namespace='urn:locahost-service' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
        </output>
        </operation>
    </binding>

    <!-- Define the service -->
    <service name='Service'>
        <port name='Port' binding='Binding' >
            <!-- Location -->
            <soap:address location='http://localhost/Web_Service/SampleXML/soap-server.php' />
        </port>
    </service>

</definitions>

soap-server.php

<?php

    function getHelloWorld() {
        return "Hello World";
    }

    ini_set("soap.wsdl_cache_enabled", "0");

    $server = new SoapServer('service.wsdl');
    $server->addFunction("getHelloWorld");    
    $server->handle();

?>

Did I miss something in the code?

try to set this line,

ini_set("default_socket_timeout", 200);

or put this in php.ini

 default_socket_timeout = 200

I suppose it's too late, but I have the same problem. I try the socket timeout but it doesn't work. My problem was that the client and the server where in the same physical server. With the client code working in the same physical server , I get this error, but, with the same client code moved to my localhost, requesting the server, (client and server was executed in two differents mechines) all works fine.

Maybe that can help someone else!

I had this problem with intensive SOAP calls, the solution swich off KeepAlive in httpd.conf in apache.

Add KeepAlive Off to httpd.conf and restart apache.

I just want to report that this error is triggered when you try to connect to a server and this server replies with invalid data or does not reply at all.

Increasing the timeout could be helpful but only in the context that the server is taking too long to reply, as said you can increase the value in php.ini

default_socket_timeout = 200

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM