在PHP中使用参数调用soap函数

时间:2017-02-14 10:46:21

标签: php soap

我是肥皂新手,我有这个任务,我需要发送请求和接收响应。但是,我得到肥皂故障异常,说明缺少或无效的参数。我已经看了几个小时的解决方案,但没有一个对我有用。

我知道我的参数不起作用,但我不知道如何发送它们。我已将它们包装在一个数组中,因为很少有解决方案说明了这一点,但它对我来说并不起作用。

如果你能看看我的情况并帮助我解决了解情况,我将非常感激。

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

SOAP功能:

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

<?php

SOAP TYPES:

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

1 个答案:

答案 0 :(得分:0)

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