【问题标题】:PHP SOAP: Passing the same parameters with the same namePHP SOAP:以相同的名称传递相同的参数
【发布时间】:2018-10-27 08:25:53
【问题描述】:

我无法让它工作。我已经在论坛上阅读了很多关于它的内容,但我似乎无法找到解决此问题的方法。

我创建了一个 SOAP 调用并且它正在工作等,但是当我尝试多次传递相同的参数时,它只会覆盖自身,这是合乎逻辑的。

代码必须只处理对象,所以我使用了 stdClass()

以下代码示例:

$relationCreate = new stdClass();

$relationCreate->credentials = new stdClass();
$relationCreate->credentials->ApiKey = ''; //Removed for security reasons.
$relationCreate->credentials->DatabaseId = ''; //Removed for security reasons.;
$relationCreate->credentials->UserId = ''; //Removed for security reasons.;

$relationCreate->parentRelationId = $company;
$relationCreate->relationEntityTypeId = "84a15869-5b88-49df-ad47-7b6f9648ae07";

//surname
$relationCreate->relationFieldValues = new stdClass();
$relationCreate->relationFieldValues->PvFieldValueData = new stdClass();
$relationCreate->relationFieldValues->PvFieldValueData->Id = "9d549512-dc8a-4774-84d1-27a349e8a8c7";
$relationCreate->relationFieldValues->PvFieldValueData->Value = $name;

// This one has to repeat wich does not work. Wich is logical
$relationCreate->relationFieldValues = new stdClass();
$relationCreate->relationFieldValues->PvFieldValueData = new stdClass();
$relationCreate->relationFieldValues->PvFieldValueData->Id = "9d549512-dc8a-4774-84d1-27a349e8a8c7";
$relationCreate->relationFieldValues->PvFieldValueData->Value = $name;

soap 应该如下所示,我使用 SoapUI 进行了测试:

<api:fieldValues>
    <!--Zero or more repetitions:-->
    <api:PvFieldValueData>
        <api:Id>c2fcb464-92e6-4227-8672-56f88e219279</api:Id>
        <!--Optional:-->
        <api:Value>Test</api:Value>
    </api:PvFieldValueData>
</api:fieldValues>

<api:fieldValues>
<!--Zero or more repetitions:-->
<api:PvFieldValueData>
    <api:Id>d900fe23-8549-451c-82f4-c5918cb3abbb</api:Id>
    <!--Optional:-->
    <api:Value>Test</api:Value>
</api:PvFieldValueData>
</api:fieldValues>
     
 

WSDL 文件供参考:https://api.perfectview.nl/V1/perfectview.asmx?WSDL

参考资料: PHP SoapClient - Multiple attributes with the same key

SoapClient: how to pass multiple elements with same name?

【问题讨论】:

    标签: php api soap soap-client


    【解决方案1】:

    您可以尝试将项目放入数组中。

    例子:

    $relationCreate->relationFieldValues = [];
    
    // repeat this in a foreach loop:
    $item = new stdClass();
    $item->PvFieldValueData = new stdClass();
    $item->PvFieldValueData->Id = $uuid;
    $item->PvFieldValueData->Value = $name;
    
    // Add item to values
    $relationCreate->relationFieldValues[] = $item; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多