我遇到错误:没有有效的操作参数,无法处理请求。 我想只通过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文件中描述。怎么样?
答案 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/