【问题标题】:PHP SoapClient set up for WSDLs with style document and body literalPHP SoapClient 为具有样式文档和正文文字的 WSDL 设置
【发布时间】:2012-03-28 23:40:22
【问题描述】:

我正在使用 PHP 5.3.10 连接到使用 SOAP 公开其方法的 WCF Web 服务。我希望能够使用 SoapClient,但我无法正确地制定请求。

WSDL 似乎为 1.0(wsdl:definitions 标记中的 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/)。

WSDL 中的每个操作的定义类似于:

<wsdl:operation name="GetPortfolios">
    <soap:operation soapAction="urn:IPortfolio/GetPortfolios" style="document"/>
    <wsdl:input>
        <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
        <soap:body use="literal"/>
    </wsdl:output>
 </wsdl:operation>

我想以数组的形式创建对主体的请求,以便肥皂主体最终看起来像这样:

<GetPortfolios>
    <Portfolio>*con*</Portfolio>
    <Token>1234</Token>
</GetPortfolios>

这可以用 PHP 5.3.10 SoapClient 完成吗? (请举个例子)。如果对 SoapClient 实例的调用称为 __soapCall(),我更愿意。


更新: 绑定上方是另一个 WSDL 的导入。

原来的 WSDL 是https://clienttest.praemium.biz/praemiumclientwebservice/PortfolioService.svc?wsdl

导入看起来像:&lt;wsdl:import namespace="" location="https://clienttest.praemium.biz/PraemiumClientWebService/PortfolioService.svc?wsdl=wsdl0"/&gt;

并且该提供者在操作级别上提供有关请求和响应的更多信息,并且还执行另一个导入:

<xsd:schema targetNamespace="/Imports">
<xsd:import schemaLocation="https://clienttest.praemium.biz/PraemiumClientWebService/PortfolioService.svc?xsd=xsd0"/>
</xsd:schema>

正是这种导入详细说明了请求中预期的实际元素以及响应中预期的元素。

顺便说一句,PHP SoapClient 可以像这样处理链式导入吗?

【问题讨论】:

    标签: php soap-client


    【解决方案1】:

    我最终不得不跳过使用 WSDL,并指定位置、uri、样式和用作 SoapClient 构造函数的参数。 style 设置为 SOAP_DOCUMENT,use 设置为 SOAP_LITERAL。

    当调用 __soapCall() 时,第二个参数是一个 SoapVar,将原始 XML 包装在一个数组中(即$data = array(new SoapVar($xmlString, XSD_ANYXML));)。如果您使用 SimpleXML::asXML() 生成了 XML,请务必先去掉 &lt;?xml version="1.0" encoding="UTF-8"?&gt; 标头。

    另外,因为我正在与公开为 SOAP(即 .NET SOAP)的 WCF Web 服务通信,所以 SOAPAction 需要正斜杠分隔符,而不是默认的 PHP 哈希。为此,请将一个带有“soapaction”条目的数组作为 uri + 正斜杠 + 操作(即 $uri.'/'.$operation)作为 __soapCall() 的第三个参数传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      相关资源
      最近更新 更多