我正在尝试使用我的自定义php应用程序中的人群编写sso登录代码。我试图用SOAP做到这一点。我现在处于早期阶段,正在阅读如何将php soap与wsdl连接的文档。但我似乎陷入了很深的困境,因为我不知道接下来应该做些什么。
<?php
class test {
function authenticateApplication()
{
$client = new SoapClient("http://localhost:8095/crowd/services/SecurityServer?wsdl");
$param = array('in0' => array('credential' => 'password','name' => 'app'));
$resp=$client->authenticateApplication($param);
$token = $resp->out->token;
print_r($resp);
}
}
$t= new test;
$t->authenticateApplication();
我不知道这段代码有什么问题。我在网上提到它似乎是正确的,但是当我想运行这个程序时,我收到了这个错误
Fatal error: Uncaught SoapFault exception: [soap:Client] The validated object is null in /var/www/html/badebade/soaptest.php:7 Stack trace: #0 /var/www/html/badebade/soaptest.php(7): SoapClient->__call('authenticateApp...', Array) #1 /var/www/html/badebade/soaptest.php(7): SoapClient->authenticateApplication(Array) #2 /var/www/html/badebade/soaptest.php(13): test->authenticateApplication() #3 {main} thrown in /var/www/html/badebade/soaptest.php on line 7
由于此程序在crowd wsdl中验证应用程序并返回令牌,因此将非常感谢一点帮助。有人可以帮助我实现它。
答案 0 :(得分:0)
function Find($request) {
try {
$soapClient = new SoapClient('wsdl.wsdl', array('trace' => 1));
$results = $soapClient->authenticateApplication($request);
return $results;
}
catch(SoapFault $ex) {
print $ex->getMessage();
echo '<HR>';
print $ex->getTraceAsString();
echo '<HR>';
echo $ex->getLine();
}
}
$ results = Find($ params);