SoapFault例外:[Client] SOAP-ERROR:编码:对象没有'user_name'属性

时间:2017-03-30 14:49:09

标签: php soap sugarcrm

我在使用PHP发出SoapClient调用时遇到了一些麻烦,我收到了你在标题中看到的错误。

我很确定这是“小”我缺少的东西,但我检查了类似的问题,但没有找到我的问题的答案。

让我们直接看看代码:

    $client = new SoapClient("path_to_wsdl");
    var_dump($client->__getFunctions()[1]);
    var_dump($client->__getTypes()[73]);

   //I need to call function in position [1], which is login, and I need to declare struct in position [73], user_auth

    class user_auth {
        function user_auth($username, $password) {
            $this->user_name = $username;
            $this->password = md5($password);
            $this->version = 1;
        }
    }
    $user = new user_auth("username", "password");
    $params = array("user_auth" => $user);
    print_r($params);
    $response =$client->login(array($params)); //This is where I get the exception!

我从运行这个PHP得到的是:

string(70)“set_entry_result login(user_auth $ user_auth,string $ application_name)”

string(74)“struct user_auth {string user_name; string password; string version;}”

数组([user_auth] => user_auth对象([user_name] =>用户名[密码] => md5(密码)[版本] => 1))

所以错误是在Object中,我没有“user_name”字段,但它看起来像我拥有它!

希望你们能给我一些帮助。

此致

安德烈

1 个答案:

答案 0 :(得分:0)

以下是它的解决方法,看看代码中的差异:

$client = new SoapClient("path_to_wsdl");

class user_auth {
    function user_auth($username, $password) {
        $this->user_name = $username;
        $this->password = md5($password);
        $this->version = 1;
    }
}
$user = new user_auth("username", "password");
$params = array($user);
$response =$client->__soapCall("login",$params); //Now working!