【问题标题】:PHP SOAP body - need to set schema versionPHP SOAP 主体 - 需要设置架构版本
【发布时间】:2013-07-23 17:48:22
【问题描述】:

我正在使用对 Web 服务的非 wsdl SOAP 调用,我能够根据需要构建请求,但是我需要在信封正文中设置架构版本。

我可以使用 PHP SoapClient 构建这个请求:

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://schemas.discovery.co.za/vitality">
<env:Body>
<ns1:UsageEligibilityRequest>
        <ns1:RequestingEntityNumber>12345678</ns1:RequestingEntityNumber>
         <ns1:Entities>
            <ns1:EntityNumber>12345678</ns1:EntityNumber>

            <ns1:DateOfBirth>1980-01-01</ns1:DateOfBirth>

            <ns1:Gender>M</ns1:Gender>
            <ns1:FirstInitial>H</ns1:FirstInitial>
         </ns1:Entities>
</ns1:UsageEligibilityRequest>
</env:Body>
</env:Envelope> 

但是我需要这一行:

<ns1:UsageEligibilityRequest> 

成为

<ns1:UsageEligibilityRequest schemaVersion="1.0">

不确定如何在 PHP 中使用内置函数/选项执行此操作,而且 Google 似乎很难做到这一点。

这是使用如下代码构建的:

$client->__soapCall('UsageEligibilityRequest', array($options));

谢谢。

【问题讨论】:

    标签: php soap schema php-5.3 soap-client


    【解决方案1】:

    有两种方法可以做到这一点

    $requestingUser = 12345678;
    $entityNumber = 12345678;
    $dateOfBirth = '1980-01-01';
    $gender = 'M';
    $firstInitial = 'H';
    
    1. 要么使用 SoapVar,例如:

      $paramsSOAPVar = new SoapVar('<ns1:UsageEligibilityRequest schemaVersion="1">  
         <ns1:RequestingEntityNumber>' . $requestingUser. '</ns1:RequestingEntityNumber>  
            <ns1:Entities>  
               <ns1:EntityNumber>' . $entityNumber. '</ns1:EntityNumber>
               <ns1:DateOfBirth>' .$requestingUser. '</ns1:DateOfBirth>
               <ns1:Gender>' .$gender. 'M</ns1:Gender>
               <ns1:FirstInitial>' .$firstInitial. '</ns1:FirstInitial>
            </ns1:Entities>
         </ns1:UsageEligibilityRequest>', XSD_ANYXML);  
      
    2. 设置参数数组:

      $params = array(
         'schemaVersion' => 1,
         'RequestingEntityNumber' => $requestingUser, 
         'Entities' => array(
             'EntityNumber' => $entityNumber,
             'DateOfBirth' => $dateOfBirth,
             'Gender' => $gender,
             'FirstInitial' => $firstInitial
          ) 
      );
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2020-09-01
      相关资源
      最近更新 更多