SOAP-ERROR: Couldn't Load from external entity (Where endpoint resolves to another location)

[email protected] ("superpspace") Wed, 26 Jun 2013 11:23:18 +1000
Newsgroups php.soap
Message-ID <[email protected]>
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