SOAP错误;无法处理

时间:2017-11-01 08:39:50

标签: php soap complextype soapfault

我遇到错误:没有有效的操作参数,无法处理请求。 我想只通过SOAP服务器登录。 我的wsdl在这里:https://demo.krd.pl/Siddin/2.1/Import.asmx?WSDL 我的代码就像:

$client = new SoapClient('https://demo.krd.pl/Siddin/2.1/Import.asmx?WSDL', array(
            'location' => 'https://demo.krd.pl/Siddin/2.1/Import.asmx?WSDL',
            'trace' => 1,
            'exceptions' => true,
            'cache_wsdl' => WSDL_CACHE_NONE,
            'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
            'soap_version' => SOAP_1_2
        ));
    $auth = new stdClass();
    $auth->UserName = 'aaa';
    $auth->Password = 'bbb';
    $auth = new SoapVar($auth, SOAP_ENC_OBJECT, 'complexType', null, 'LoginRequest', 'types');
    $result = $client->login($auth);
    die(var_dump($result));

正如您所看到的,我想在此SOAP服务器上使用参数LoginRequest调用方法'login' - 它在wsdl文件中描述。怎么样?

1 个答案:

答案 0 :(得分:0)

without a valid action parameter.

这意味着您的php soap客户端无法构成所需的SOAPAction http标头。您为WSDL定义了登录方法:

soapAction="http://Siddin.ServiceContracts/2006/09/Login"

有很多理由可以不添加标题,例如这一个:

'soap_version' => SOAP_1_2,

尝试将其更改为

'soap_version' => SOAP_1_1,

如果没有解决它,我建议您通过跟踪正在发送的消息(包括http标头)来开始一般的肥皂调试,并将其与您可以设置的工作请求进行比较,例如:使用SoapUI https://www.soapui.org/