如何解决当通过具有相对路径模式的wsdl传递php SoapClient时失败
|| 我有以下问题: 当我向其传递使用相对路径导入架构的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
的服务器上进行托管
解决方法
就像我怀疑的那样。
模式的相对路径意味着SoapClient在解析wsdl时将尝试使用代理作为参考来访问模式文件,如下所示:
http://myproxy/schema1.xsd
由于我没有xsd文件,因此这将导致SoapClient引发错误。
然后,此问题的解决方案是消除代理,以便不影响到外部资源的相对路径。解决方案可以在这里找到:
扩展php SoapClient进行siteminder身份验证
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。