2011-08-09 133 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