Paspirgilis
Weißer Powerranger
Hi,
Ich hab wieder ein Problem mit SOAP.
Ich möchte einen SOAP request absetzen um Userinformationen zu bekommen.
Das Sicherheits verfahren "usernameToken" wird verwendet.
Bitte im thread von den hypothetischen Spezifikationen ausgehen:
url der website: http://www.site.de
loginUsername: user123
loginPassword: pw123
WSDL-File: http://www.provider.de/wsdl
UserId des User dessen userinfos ich bekommen will: 78256
Funktion des Webservices die ich nutzen will: getEmployee
Ich habe ein Codebeispiel auf php.net gefunden, komme aber nicht klar
Soweit mein Code:
Der usernameToken soll eigentlich base64 codiert sein und den loginnamen und den tiemstamp in milisekunden beinhalten.
Bitte hilft mir
MfG
Mark Paspirgilis
Ich hab wieder ein Problem mit SOAP.
Ich möchte einen SOAP request absetzen um Userinformationen zu bekommen.
Das Sicherheits verfahren "usernameToken" wird verwendet.
Bitte im thread von den hypothetischen Spezifikationen ausgehen:
url der website: http://www.site.de
loginUsername: user123
loginPassword: pw123
WSDL-File: http://www.provider.de/wsdl
UserId des User dessen userinfos ich bekommen will: 78256
Funktion des Webservices die ich nutzen will: getEmployee
Ich habe ein Codebeispiel auf php.net gefunden, komme aber nicht klar
Soweit mein Code:
PHP:
Step1: Create two classes to create a structure for WSSE headers <br/><br/>
<?php
class clsWSSEAuth {
private $Username;
private $Password;
function __construct($username, $password) {
$this->Username = $username;
$this->Password = $password;
}
}
class clsWSSEToken {
private $UsernameToken;
function __construct($innerVal) {
$this->UsernameToken = $innerVal;
}
}
?>
Step2: Create Soap Variables for UserName and Password<br/><br/>
<?php
$username = 'user123';
$password = 'pw123';
//Check with your provider which security name-space they are using.
$strWSSENS = "http://schemas.xmlsoap.org/ws/2002/07/secext";
$objSoapVarUser = new SoapVar($username, XSD_STRING, NULL, $strWSSENS, NULL, $strWSSENS);
$objSoapVarPass = new SoapVar($password, XSD_STRING, NULL, $strWSSENS, NULL, $strWSSENS);
?>
Step3: Create Object for Auth Class and pass in soap var<br/><br/>
<?php
$objWSSEAuth = new clsWSSEAuth($objSoapVarUser, $objSoapVarPass);
?>
Step4: Create SoapVar out of object of Auth class<br/><br/>
<?php
$objSoapVarWSSEAuth = new SoapVar($objWSSEAuth, SOAP_ENC_OBJECT, NULL, $strWSSENS, 'UsernameToken', $strWSSENS);
?>
Step5: Create object for Token Class<br/><br/>
<?php
$objWSSEToken = new clsWSSEToken($objSoapVarWSSEAuth);
?>
Step6: Create SoapVar out of object of Token class<br/><br/>
<?php
$objSoapVarWSSEToken = new SoapVar($objWSSEToken, SOAP_ENC_OBJECT, NULL, $strWSSENS, 'UsernameToken', $strWSSENS);
?>
Step7: Create SoapVar for 'Security' node<br/><br/>
<?php
$objSoapVarHeaderVal = new SoapVar($objSoapVarWSSEToken, SOAP_ENC_OBJECT, NULL, $strWSSENS, 'Security', $strWSSENS);
?>
Step8: Create header object out of security soapvar<br/><br/>
<?php
$objSoapVarWSSEHeader = new SoapHeader($strWSSENS, 'Security', $objSoapVarHeaderVal, true, 'http://abce.com');
//Third parameter here makes 'mustUnderstand=1
//Forth parameter generates 'actor="http://abce.com"'
?>
Step9: Create object of Soap Client<br/><br/>
<?php
$objClient = new SoapClient('http://www.provider.de/wsdl');
?>
Step10: Set headers for soapclient object<br/><br/>
<?php
$objClient->__setSoapHeaders(array($objSoapVarWSSEHeader));
?>
Step 11: Final call to method<br/><br/>
<?php
$objResponse = $objClient->__soapCall('getEmployee', array(78256));
?>
Der usernameToken soll eigentlich base64 codiert sein und den loginnamen und den tiemstamp in milisekunden beinhalten.
Bitte hilft mir
MfG
Mark Paspirgilis