我在使用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”字段,但它看起来像我拥有它!
希望你们能给我一些帮助。
此致
安德烈
答案 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!