0

我是 SOAP 新手,并尝试调用托管在其他地方的 web 服务。

我正在尝试调用“IsUniqueUser”网络服务来检查用户是否是唯一的。

以下是服务架构..

<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 中调用此服务

  $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);

或者

    $unique = $client->isUniqueUser($params);

或者

     $unique = $client->_soapCall('isUniqueUser', array('paramaters'=>$params));

或者

       $unique = $client->_soapCall('isUniqueUser', array('request'=>$params));

我仍然遇到同样的错误。我已就此问题与提供商联系,他们说在传递参数时代码有问题。

谁能告诉我如何解决这个问题?

谢谢

4

4 回答 4

1

我可以从您的请求中看到您在“ser:request”下有 xsd:userName 节点,您可以尝试创建具有 userName 数组的请求数组。

$params = array('UserName' =>$_POST['userName']);
$paramsrequest = array('request' =>$param);
$unique = $client->__soapCall("isUniqueUser",$paramsrequest);
于 2012-07-30T08:22:37.243 回答
0

我有同样的问题。我尝试了你所做的一切。

这个为我解决了:

$result = $soapClient->somefunction(array(
    "param1" => "value1",
    "param2" => "value2"
));

于 2014-09-24T17:17:10.320 回答
0

在我的一个项目中,我使用了这个:

    $soapClient = new SoapClient($wsdl,$params);
    $reponseclient=$soapClient->authentification($username,$password);
    if($reponseclient->demandeRealisee===false){
         error_log("Couldn't log ".$username);
    }
于 2012-07-26T09:27:22.750 回答
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 之类的肥皂客户端手动触发?它在工作吗?

于 2012-07-26T08:09:01.077 回答