我是SOAP的新手,并尝试调用托管在某个地方的webservice。
我试图调用“IsUniqueUser”webservice来检查用户是否是唯一的。
以下是服务架构..
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="some service" xmlns:xsd="some xsd" xmlns:xsd1="">
<soap:Header/>
<soap:Body>
<ser:isUniqueUser>
<!--Optional:-->
<ser:request>
<xsd:userName>SomeValidUserName</xsd:userName>
</ser:request>
</ser:isUniqueUser>
</soap:Body>
</soap:Envelope>
我正在尝试使用以下代码在php中调用此xervice
$client = new SoapClient('Some.wsdl');
在http身份验证之后,我尝试调用isUniqueUser方法并将“userName”作为参数传递。
$unique = $client->__soapCall('isUniqueUser', array('userName' =>'vish123'));
但没有任何结果,我得到以下错误
stdClass Object
(
[return] => stdClass Object
(
[errorCode] => 11ARPMWS1004
[errorMessage] => null. null
[status] => Failure
[uniqueUser] =>
)
)
我试图以多种方式传递参数,如
$params = array('UserName' =>$_POST['userName']);
$unique = $client->__soapCall("isUniqueUser", $params);
OR
$unique = $client->isUniqueUser($params);
OR
$unique = $client->_soapCall('isUniqueUser', array('paramaters'=>$params));
OR
$unique = $client->_soapCall('isUniqueUser', array('request'=>$params));
我仍然得到同样的错误。我已经与提供商联系了这个问题,他们说在传递参数时代码有问题。
有谁能告诉我如何解决这个问题?
由于
答案 0 :(得分:1)
我从你的请求中看到的是你在“ser:request”下有xsd:userName节点,你可以尝试创建具有userName数组的请求数组。
$params = array('UserName' =>$_POST['userName']);
$paramsrequest = array('request' =>$param);
$unique = $client->__soapCall("isUniqueUser",$paramsrequest);
答案 1 :(得分:0)
看看这是否有帮助:
<?php
$sClient = new SoapClient('Some.wsdl');
$wrapper = null;
$wrapper->isUniqueUser->request->userName = new SoapVar('SomeValidUserName', XSD_STRING);
$result = $sClient->isUniqueUser($wrapper);
echo $sClient->__getLastResponse();
?>
此外,您是否尝试使用soapUI之类的肥皂客户端手动触发?它有效吗?
答案 2 :(得分:0)
在我的一个项目中,我使用了这个:
$soapClient = new SoapClient($wsdl,$params);
$reponseclient=$soapClient->authentification($username,$password);
if($reponseclient->demandeRealisee===false){
error_log("Couldn't log ".$username);
}
答案 3 :(得分:0)
我遇到了同样的问题。我尝试了你所做的一切。
这个为我解决了:
$result = $soapClient->somefunction(array(
"param1" => "value1",
"param2" => "value2"
));