【问题标题】:Calling soap function with parameters in PHP在PHP中使用参数调用soap函数
【发布时间】:2017-02-14 10:46:21
【问题描述】:

我是肥皂新手,我有这个任务,我需要发送请求和接收响应。但是我得到了soap错误异常,说明参数丢失或无效。我一直在寻找解决方案几个小时,但没有一个对我有用。

我知道我的参数不起作用,但我不知道如何发送它们。我已经将它们包装在一个数组中,因为很少有解决方案指出,但它对我不起作用。

如果您能看看我的情况并帮助我解决了解情况,我将不胜感激。

如果我使用 SoapClient 连接 SOAP,并获取函数和类型,我会得到以下信息:

SOAP 函数:

array (
        [0] => agentBalanceResult getAgentBalance(authorizationData $requesterAuthentication, agentIdentifier $targetAgent, string $productId,   string $requestTag)
)

<?php

SOAP 类型:

Array
(
[0] => struct authorizationData {
              aliasCategory aliasCategory;
              string aliasName;
              string aliasPassword;
              long mvnoId;
       }

[1] => struct agentIdentifier {
              long actorId;
              aliasCategory aliasCategory;
              string aliasName;
              long mvnoId;
       }
)

发送请求的我的班级

class SendRequest {

private $client;

public function __construct(){

    $this->client = new SoapClient(
                                    "myurl",
                                    [
                                        'location' => 'myurl'
                                    ]
                    );

}

public function sendRequestWithData(){

    //test parameters
    $testParameters = [

        "authorizationData" => [
            "aliasCategory" => "*****",
            "aliasName" => "*****",
            "aliasPassword" => "*****",
            "mvnoId" => "*****"
        ],

        "agentIdentifier" => [
            "actorId" => *****,
            "aliasName" => "*****",
            "aliasCategory" => "*****",
            "mvnoId" => "*****"
        ],

        "productId" => "*****",
        "requestTag" => "*****"

    ];

    $this->client->getAgentBalance($testParameters);

}

}

$send = new SendRequest;
$send->sendRequestWithData();

// throws Uncaught SoapFault exception: [env:Server] Missing or invalid SOAP request parameters in

【问题讨论】:

    标签: php soap


    【解决方案1】:

    我最好的建议是使用 WSDL 到 php 生成器。它将生成与构造请求所需的参数匹配的类,并且您将拥有与响应匹配的类。此外,您将拥有发送请求的类,因此如果您使用具有自动完成功能的正确 IDE(例如 Eclipse PDT),您不会想知道需要哪些参数。 除了PackageGenerator 项目来生成与 SoapClient WSDL 结构和服务匹配的类,我无法为您提供任何其他建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2015-03-28
      • 2011-04-02
      • 1970-01-01
      • 2016-06-20
      • 2015-05-03
      • 1970-01-01
      相关资源
      最近更新 更多