首页  >  问答  >  正文

如何在 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>
P粉511896716P粉511896716389 天前537

全部回复(1)我来回复

  • P粉916553895

    P粉9165538952023-08-30 11:31:46

    消息“未知所需的 WSDL 扩展”意味着 SoapClient 在外部发现了一个元素 WSDL 命名空间的 wsdl:required 属性设置为 true (正如您在此处看到的)。

    因此,为了避免该错误,一种方法是将 wsdl:required 属性设置为 false

    完全可以下载 WSDL 文件、修改它并使用本地副本。只需确保使用 绝对路径,如此处所示。

    顺便说一下,此上下文中的“策略”指的是 WS-Policy 规范。

    回复
    0
  • 取消回复