如何在 SOAP 客户端中提供 SOAP API 策略/扩展要求
<p>我需要连接到一个soap api ...现在我已经使用过soap api几次了,但是由于99%的api现在都处于休息状态,我已经有好几年没有使用它们了</p>
<p>当我使用soap客户端调用api时,我得到</p>
<pre class="brush:php;toolbar:false;">SOAP-ERROR: Parsing WSDL: Unknown required WSDL extension 'http://schemas.xmlsoap.org/ws/2004/09/policy'</pre>
<p>因此,当我在浏览器中打开 wsdl 地址(登录/密码保护)时,我可以在 xml 输出中看到这些行</p>
<pre class="brush:php;toolbar:false;"><wsdl:definitions xmlns:p1="urn:haixin:all2crm" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="SI_USBPC_REQUEST" targetNamespace="urn:haixin:all2crm">
<wsdl:documentation/>
<wsp:UsingPolicy wsdl:required="true"/>
<wsp:Policy wsu:Id="OP_SI_USBPC_REQUEST"/></pre>
<p>在我有的地方</p>
<pre class="brush:php;toolbar:false;"><wsp:Policy>
<wsp:PolicyReference URI="#OP_SI_USBPC_REQUEST"/>
</wsp:Policy></pre>
<p>当我搜索此错误时,我只能在整个互联网中找到 1 个资源,答案是关闭策略要求,即: <code><wsp:UsingPolicy wsdl:required="false"/></code> 但我不拥有api,所以当我搜索策略名称 <code>OP_SI_USBPC_REQUEST</code> 时,这也是没有问题的,我没有得到任何结果,所以我猜测这是 api 所有者设置的一些自定义名称</p>
<p>所以我的问题是我应该制定政策并将其附加到肥皂客户端请求中吗?
政策和扩展之间的联系是什么,因为我收到扩展丢失错误,但如果我关闭政策要求,它就会消失</p>
<p>可以从某处下载扩展吗?格式是什么...我应该将它们附加到肥皂客户端请求中吗?</p>
<p>或者它是应该安装在服务器上的东西?如果我以某种方式添加扩展程序,错误就会消失,因为我已经将用户名/密码附加到 api 调用,或者这只是第一步,之后我应该处理策略要求吗?</p>
<p>顺便说一句,我使用 php 调用 api,这是我的代码</p>
<pre class="brush:php;toolbar:false;">$options = [
'login' => 'mlogin',
'password' => 'mypassword',
];
$client = new \SoapClient("http://domain:port/dir/wsdl/?p=sa/92130e1ffa97338ba2d1fc026567031d" , $options );</pre>
<p>如果我下载 xml 并关闭对本地文件的要求并在肥皂客户端中使用该文件地址,我可以使用该文件与 api 对话吗? (我的理解是xml不包含任何实际数据,它只是soap客户端的接口/定义,我无法使用本地文件与在线api对话,或者也许我错了?)</p>