PHP SOAP Call中具有相同名称的多个元素

时间:2014-12-18 11:58:52

标签: php soap wsdl elements

我知道这类问题已被多次询问过。我花了几个小时阅读并尝试提供的解决方案 - 但似乎没有一个适用于我的情况。

我需要向一个API发送一个SOAP请求,该API可以包含一个像这样重复的元素:

<operationNumbers>
    <operationNumber>1234</operationNumber>
    <operationNumber>1235</operationNumber>
    <operationNumber>1236</operationNumber>
    <operationNumber>1237</operationNumber>
</operationNumbers>

我确实读过,也许我可以这样做:

  $buildRequest = Array(
      'myheader' => Array(
      'date' => MY_DATE,
      'id' => Array(
          'client' => CLIENT,
          'clientRef' => MYREF
          )
      ),
      'operationNumbers' => Array (
          Array('operationNumber' => '1234'),
          Array('operationNumber' => '1235')
      )
   ); 

   $request = $client->__soapCall( 'getMultiOpDets', array($buildRequest) );

遗憾的是,如果我发送一个操作号码,这不会起作用并导致“无效请求”,例如:

 ...
  'operationNumbers' => Array (
      'operationNumber' => '1234'
   )
 ...

请求成功。我尝试过soapVars / soapParams,但是使用这种方法无法使用它。任何提示/提示/帮助赞赏。

2 个答案:

答案 0 :(得分:5)

所以,我解决了。

 $operationNumbersArray = array('1234','1235');

 ...

       'operationNumbers' => array(
           'operationNumber' => $operationNumbersArray
        )

在我的测试和摆弄期间,我无意中删除了另一个必须的值。 API没有发出遗漏(遗憾的是)。

答案 1 :(得分:3)

以下是我使用的代码:

~/Homestead: vagrant box update
==> homestead-7: Checking for updates to 'laravel/homestead'
    homestead-7: Latest installed version: 2.1.0
    homestead-7: Version constraints: >= 1.0.0
    homestead-7: Provider: virtualbox
There was an error while downloading the metadata for this box.
The error message is shown below:

The requested URL returned error: 401 Unauthorized