我有以下问题:
当我向其传递使用相对路径导入模式的wsdl时,我的SoapClient对象的实例化失败。 (无论如何,根据我的研究,我认为情况就是这样)
我的代码如下:
$wsdl = 'http://myproxy/webservice?wsdl';
$options = array( /* options */ );
$client = new SoapClient($wsdl, $options);
wsdl的架构导入部分:
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://myprovider/namespace1/namespace1" schemaLocation="schema1.xsd"/>
<import namespace="http://myprovider/namespace1/namespace2" schemaLocation="schema2.xsd"/>
<import namespace="http://myprovider/namespace1/namespace3" schemaLocation="schema3.xsd"/>
</schema>
我得到的错误:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://myproxy/webservice?wsdl' : Extra content at the end of the document
研究让我得到了这样的文章:
https://issues.apache.org/jira/browse/AXIS2-484
据我所知,似乎我有两个选择:
SoapClient
来自答案 0 :(得分:1)
正如我所怀疑的那样。
模式的相对路径意味着SoapClient在解析wsdl时会尝试使用代理作为参考来访问模式文件,如下所示:
http://myproxy/schema1.xsd
由于我没有xsd文件,这会导致SoapClient抛出错误。
此问题的解决方案是消除代理,以便不影响外部资源的相对路径。溶剂可以在这里找到: