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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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-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 80940D84E43C0C45AA2C4A9B432B675A19D03520@SN2PRD0202MB120.namprd02.prod.outlook.com">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-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


--
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





[Index of Archives]     [PHP Home]     [PHP Users]     [Kernel Newbies]     [PHP Database]     [Yosemite]

  Powered by Linux