2011-08-09 76 views
0

我试图使用Web服务有这样的WSDL文件:http://dgpysws.teias.gov.tr/dgpys/services/EVDServis?wsdlSOAP授权

我想消费“setIkiliAnlasma”服务,但访问该服务需要验证。我有我的凭据,当我进行SOAP调用登录服务时,它会验证我的凭据。

和预期的一样,当我打电话给“setIkiliAnlasma”服务时,我收到一个授权错误。将登录调用提供的授权与我需要使用的主要服务结合起来的方法是什么?

顺便说编程语言,我usign是PHP和本地SoapClient的功能:http://www.php.net/manual/en/class.soapclient.php

+0

您是如何验证身份的?你可以发表一个例子吗? – ManseUK

+0

我应该使用WSDL文件提供的登录方法,您可以在wsdl中看到它或参阅http://goo.gl/G2PJk – Lashae

+0

请参阅下面的答案 - 添加了一些代码作为如何使用的示例使用webservice进行身份验证 - 我可以看到登录方法以及该方法的输出是loginResponse - 在我的答案中使用代码并更新它以匹配您的wsdl ... – ManseUK

回答

0

这是一个在PHP中使用SOAPClient进行身份验证的示例 - 您只需将其适用于您正在使用的WSDL->

// Setting "trace" will allow us to view the request that we are making, after we have made it. 
$objClient = new SoapClient("http://www.somewhere.com/wsdls/some.wsdl", array('trace' => true)); 

// These parameters satisfy this specific remote call. 
$arrParameters_Login = array('username' => 'username', 'password' => 'password'); 

// Invoke the remote call "login()". 
$objLogin = $objClient->login($arrParameters_Login); 

// Grab session ID that this remote call will provide. 
$strSessionID = $objLogin->loginReturn->sessionId; 

然后,您将需要使用在登录响应中发送给您的sessionid/session代码 - 可能是在头文件中 - 它专用于每个WSDL。

+0

是的Manseuk你是对的。我使用''SoapClient :: __ doRequest''使用原始SOAP调用,并使用Apache Axis2 UUID登录调用响应。该会话ID应该在后面的调用中提及。 – Lashae