Consommer un Web Service Sage 1000
De Wiki1000
Version du 23 janvier 2015 à 13:53 par Flfay (discuter | contributions)
Nous allons créer un paquet de service local et l'utiliser avec .NET.
Création du paquet de service local
Les étapes sont :
- Création du paquet de stéréotype "Service Local"
- Occuper le paquet,
- Ajouter deux classes de stéréotype "Classe non persistantes" maClassParamIn et maClassParamOut (cette étape n'est pas obligatoire, on peut utiliser des types simples)
- Ajouter une classe de stéréotype "Classe support de service local"
- Sur cette classe ajouter une opération de service Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;
//Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut; begin result := maClassParamOut.Create; result.monAttribut := 'echo' + aParamIn.monAttribut; end;
- Libérer le paquet et le publier dans le référentiel
- redémarrer le service, on constate à l'adresse http://[hôte]/[service]/server/soap.l1000?wsdl que le web service est disponible
- le wsdl est visible à l'adresse http://[hôte]/[service]/server/soap.l1000?wsdl=TestServiceLocal
- on remarque en bas du wsdl la ligne <soap:address location=... qui représente le endpoint soap.
Création du token d'authentification
Outre les combinaisons utilisateur/mot de passe, il est possible de s'authentifier auprès d'un service web grâce à un token. Cette méthode est préférable, elle évite la divulgation du mot de passe et permet la révocation d'un token sans révoquer l'utilisateur.
Consommation du paquet de service local créé
Le web service d'authentification est disponible à l'adresse http://[hôte]/[service]/server/soap.l1000?wsdl=Sage1000Authentication
//obtention de la session Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient auth = new Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient(); String session = auth.LocalServiceLoginToken("2E235A772C0D0105F4D1670CD60000005562BD0A1D2A13345A4A84A7D98DC9B7B736B0396E60E957ED499DD29EA3D2F86B832C7B571228B5BC612741A3EA7F17D9162C1E7122DD8DD3F88A8BEC2D6A337D2054DFDEE5331AD760D0C475FA3EBEA4D4A61C72D8ED99BE9006A0BB6BD7D67C8241E12AABEBC31E80D71EA0F7EC96F12731010E9520797256AF74C58AE37E31A5A5C6F83859DCA442DCD36DA814C53F3A66D52F7EC02A53A512D1E077FBEB6F5B85905CA9CA0E479250AE1C514AD12D138A80630AB84D12293CB7D63F7999C88AB211FDCDF29D1635CD1D2290BE1E5FEF7894B8D493BB"); try { ServiceTest.SessionHeader sessionHeader = new ServiceTest.SessionHeader(); sessionHeader.sessionId = session; ServiceTest.maClassParamIn paramIn = new ServiceTest.maClassParamIn(); paramIn.monAttribut = "hello world"; //invocation du service ServiceTest.maClasseSupportServiceLocalPortTypeClient srv = new ServiceTest.maClasseSupportServiceLocalPortTypeClient(); ServiceTest.maClassParamOut paramOut = srv.monOperationDeService(sessionHeader, paramIn); MessageBox.Show(paramOut.monAttribut); } finally { auth.LocalServiceLogout(session);//ne pas oublier de se déconnecter à l'issue }