使用SOAP PHP对WSDL服务器进行身份验证

麦克风

我被要求使用未记录的WebService进行身份验证,而我一直在努力使其正常工作。这是我到目前为止所做的。

$client = new SoapClient("http://x.x.x.x/dispatch/AuthenticationWebService.asmx?WSDL");
var_dump($client->__getFunctions());
echo "<br>";
var_dump($client->__getTypes()); 

$a["channelType"] = "x";
$b["userName"] = "a";
$c["password"] = "b";

var_dump($a);
var_dump($b);
var_dump($c);

try {
        print($client->__soapCall('Authenticate', array($a, $b, $c)));
} catch (SoapFault $exception) {
        echo $exception;
}

这将返回:

array(2) { [0]=> string(59) "AuthenticateResponse Authenticate(Authenticate $parameters)" [1]=> string(59) "AuthenticateResponse Authenticate(Authenticate $parameters)" } 

array(5) { [0]=> string(92) "struct Authenticate { BookingChannelType channelType; string userName; string password; }" [1]=> string(25) "string BookingChannelType" [2]=> string(73) "struct AuthenticateResponse { AuthenticationResult AuthenticateResult; }" [3]=> string(116) "struct AuthenticationResult { AuthenticationError Error; string ErrorMessage; boolean Succeeded; string Token; }" [4]=> string(26) "string AuthenticationError" } 


array(1) { ["channelType"]=> string(3) "Web" } array(1) { ["userName"]=> string(10) "RouteMatch" } array(1) { ["password"]=> string(6) "Rm2012" } 


SoapFault exception: [soap:Server] Server was unable to process request. ---> Value cannot be null. Parameter name: userName in /var/www/WebService/test.php:76 Stack trace: #0 /var/www/WebService/test.php(76): SoapClient->__soapCall('Authenticate', Array) #1 {main}

对于我的一生,我不明白为什么这行不通?我也尝试了其他几种组合。

如果我改变

$a["channelType"] = "Web";

到其他的东西,例如

$a["channelType"] = "junk"; 

然后说...

SoapFault exception: [soap:Client] Server was unable to read request. ---> There is an error in XML document (2, 225). ---> Instance validation error: 'Junk' is not a valid value for BookingChannelType. in /var/www/WebService/test.php:71 Stack trace: #0 /var/www/WebService/test.php(71): SoapClient->__soapCall('Authenticate', Array) #1 {main} 

这向我表明数据正在传递到Web服务,但是我不知道为什么userName和密码返回为null?

我也尝试过:

try {
        print($client->__soapCall('Authenticate', array($a, "a", "b")));
} catch (SoapFault $exception) {
        echo $exception;
}

无济于事..它仍然说userName为null。

我要去哪里错了?

麦克风
$SoapCallParameters["channelType"] = "x";$SoapCallParameters["userName"] = "a";$SoapCallParameters["password"] = "b";

try {
        $obj = $client->__soapCall("Authenticate", array('parameters'=>$SoapCallParameters));
        var_dump($obj);
} catch (SoapFault $exception) {
        echo $exception;
}

经过一番调查,wsdl Web服务是一个.NET服务。这意味着您需要在传递值的同时添加“参数”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查用户是否使用 PHP 在服务器上通过 Firebase 身份验证进行身份验证?

无法使用Windows身份验证向SMTP服务器进行身份验证

使用Google身份验证在SSH服务器上进行两因素身份验证

使用服务帐户进行GCP服务器到服务器的身份验证

使用集成Windows身份验证从HTTP服务器将WSDL导入soapUI

Blazor 服务器:针对 Identity Server 4 进行身份验证并使用 cookie 进行本地身份验证

在身份服务器中使用cookie和令牌进行共享身份验证

.NET Windows控制台通过php Web服务器进行身份验证并安全使用REST

Wcf 服务服务器 - 使用 usernametoken 进行身份验证

使用OAuth 2.0和Google API进行服务器到服务器身份验证的示例

如何使用Spring Security对Active Directory服务器进行身份验证?

Laravel - 无法使用用户名在 SMTP 服务器上进行身份验证

使用Linux服务器对Windows设备进行身份验证是否可行/可行?

无法使用远程服务器在本地进行身份验证

是否可以使用Google Calendar API对服务器进行身份验证?

Java-SSL-使用gmail的SMTP服务器进行身份验证

使用 CURL 向 SAML 服务器进行身份验证

无法使用编码密码对Spring OAuth授权服务器进行身份验证

如何使用android中的登录凭据对我的服务器进行身份验证?

脚本使用Gmail发送邮件:无法在SMTP服务器上进行身份验证

无法使用gmail对SMTP服务器进行身份验证错误

使用Firebase应用程序密钥对服务器进行身份验证

在Azure Function中使用JWT进行无服务器SignalR身份验证

我们如何使用Cake build对安全的NuGet服务器进行身份验证?

如何使用后端服务器进行身份验证?

无法在 SPNEGO 服务器上使用 requests-gssapi 进行身份验证

如何使用Blazor服务器对用户进行身份验证

如何使用邮件ID而不是用户名对ldap服务器进行身份验证

如何使用后端服务器对Google Home用户进行身份验证?