Re: RES: [SOAP] SOAP-ERROR: Couldn't Load from external entity (Whereendpoint resolves to another location)

From: Date: Tue, 02 Jul 2013 01:02:19 +0000
Subject: Re: RES: [SOAP] SOAP-ERROR: Couldn't Load from external entity (Whereendpoint resolves to another location)
References: 1 2 3 4 5 6  Groups: php.soap 
Request: Send a blank email to php-soap+get-3392@lists.php.net to get a copy of this message
Hi Matt, The imported WSDL name is arbitrary so I don't believe it would affect the outcome of this situation. As is the contents (I believe). To be clear, I've been asked to use the following WSDL URL:
    [1] https://provider.web-service.domain/path/ServiceName?wsdl
There are two WSDLs at the following location
    [2] https://provider.web-service.domain/path/ServiceName/another/diff/path/prefix_ServiceName.wsdl
    [3] https://provider.web-service.domain/path/ServiceName/another/diff/path/ServiceName.wsdl
* [1] resolves to [2]; Then * [2] imports [3] When passing [1] into SoapClient(), it FATALs (as described earlier) When passing [2] into SoapClient(), it works. - superspace On 02/07/13 04:25, Matt Kynx wrote:
Is the name of the imported wsdl really the same as the wsdl file that's importing it, like in your example? Have you tried copying the file and import down locally and trying from there? Failing that, can you point to a (simplified, anonymised) wsdl that reproduces the problem? Fwiw, I think the interop guidelines discourage the use of imports, but if it's not your wsdl there won't be much you can do about that... Matt Sent from the thing in my pocket On 1 Jul 2013, at 02:31, fruitmixer<fruitmixer@hotmail.com> wrote:
Sorry that does not help. To iterate, when instantiating the client:
    $wsdl = 'https://provider.web-service.domain/path/ServiceName?wsdl';
    $client = new SoapClient($wsdl);
I get the following error: PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://provider.web-service.domain/path/ServiceName.wsdl' :failed to load external entity "https://provider.web-service.domain/path/ServiceName.wsdl" - superspace On 28/06/13 21:35, Gerson Czelusniak Junior wrote:
Hi, When i call SOAP WebService created with .NET APP using SoapClient PHP the code stay like this:
        ini_set('display_errors', true);
        ini_set("soap.wsdl_cache_enabled", "0");
        error_reporting(E_ALL);
        $url = "servidor/WebService.asmx?WSDL";
        $soap = new soapClient($url, array('encoding'=>'UTF-8'));
        $param = $_POST['param'];
        $return = $soap->MethodFromWebService(array("param" =>   $param));
Maybe that can help you. -----Mensagem original----- De: superpspace [mailto:fruitmixer@hotmail.com] Enviada em: quinta-feira, 27 de junho de 2013 21:57 Para: soap@lists.php.net Assunto: RES: [SOAP] SOAP-ERROR: Couldn't Load from external entity (Where endpoint resolves to another location) 1. I believe the webservice is a .NET APP. 2. When requesting the WSDL from the browser I can see the XML. But since the XML is not trying to import the secondary WSDL, there is no errors/issues. "Gerson Czelusniak Junior" wrote in message news:80940D84E43C0C45AA2C4A9B432B675A19D03520@SN2PRD0202MB120.namprd02.prod.outlook.com... Good Morning, Your webservice is in .NET APP or in PHP? When you call the WSDL from Browser you can see the xml? -----Mensagem original----- De: superpspace [mailto:fruitmixer@hotmail.com] Enviada em: terça-feira, 25 de junho de 2013 22:23 Para: soap@lists.php.net Assunto: [SOAP] SOAP-ERROR: Couldn't Load from external entity (Where endpoint resolves to another location) Hello everyone, I have a WSDL in the following URL format (obscured):
     https://provider.web-service.domain/path/ServiceName?wsdl
that resolves to:
     https://provider.web-service.domain/path/ServiceName/another/diff/path/prefix_ServiceName.wsdl
The WSDL has a line like this:
     <wsdl:import namespace="http://name/space/service/"
location="ServiceName.wsdl"></wsdl:import> When loading the former URL into SoapClient, it complains like so:
     PHP Fatal error:  SOAP-ERROR: Parsing WSDL:
     Couldn't load from
'https://provider.web-service.domain/path/ServiceName.wsdl' :
     failed to load external entity
"https://provider.web-service.domain/path/ServiceName.wsdl" The reason i believe this happens is because it's trying to look for ServiceName.wsdl at the original location, ie. It is looking here:
     https://provider.web-service.domain/path/ServiceName.wsdl
instead of the final resolved location, here:
     https://provider.web-service.domain/path/ServiceName/another/diff/path/ServiceName.wsdl
As expected, if i pass the resolved URL into SoapClient, it works. This is not ideal because the resolved address can potentially change at any time. Is this a problem with SoapClient that can *and* need to be resolved? Your thoughts. Thanks superspace The question on stackoverflow is here:
     http://stackoverflow.com/questions/17226451/php-soapclient-couldnt-load-from-external-entity-where-endpoint-resolves-to-a
-- PHP Soap Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Soap Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
-- PHP Soap Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.soap (#3392) next »