Re: RES: [SOAP] SOAP-ERROR: Couldn't Load from external entity (Whereendpoint resolves to another location)
[email protected] (fruitmixer) Tue, 02 Jul 2013 11:02:19 +1000
| Newsgroups | php.soap |
|---|---|
| Message-ID | <[email protected]> |
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<[email protected]> 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:[email protected]]
>>> Enviada em: quinta-feira, 27 de junho de 2013 21:57
>>> Para: [email protected]
>>> 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:[email protected]] Enviada em: terça-feira, 25 de junho de 2013 22:23
>>> Para: [email protected]
>>> 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
>>