SOAP-ERROR: Couldn't Load from external entity (Where endpoint resolves to another location)
| From: | superpspace | Date: | Wed, 26 Jun 2013 01:23:18 +0000 |
| Subject: | SOAP-ERROR: Couldn't Load from external entity (Where endpoint resolves to another location) | ||
| Groups: | php.soap | ||
| Request: | Send a blank email to php-soap+get-3381@lists.php.net to get a copy of this message | ||
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