Bonjour,
Je travaille sous visual studio 2005.
J'utilise gsoap(http://www.cs.fsu.edu/~engelen/soap.html) pour attaquer un web service. Pour le web services j'ai besoin d'un "security header".
Voici la commande que j'ai exécuté avec gsoap :
Code :
$ wsdl2h -o WebService.h http://monwebservices?wsdl
Puis j'ai ajouté dans le fichier généré :
Code C/C++ :
#import "wsse.h"
[...]
/**
The SOAP Header is part of the gSOAP context and its content is accessed
through the soap.header variable. You may have to set the soap.actor variable
to serialize SOAP Headers with SOAP-ENV:actor or SOAP-ENV:role attributes.
*/
struct SOAP_ENV__Header
{
mustUnderstand // must be understood by receiver
_wsse__Security *wsse__Security; ///< TODO: Check element type (imported type)
};
J'ai ensuite compilé le fichier :
Code :
soapcpp2.exe -I"D:\gsoap-2.8\gsoap\import" "D:\WebService.h"
Les classes générées sont correcte,elles compilent et contiennent bien les informations du security header.
Puis je cherche a utiliser les éléments générés :
Code C/C++ :
#include "stdafx.h"
#include "wsseapi.h"
#include "soapWs_MON_WEB_SERVICESoapBindingProxy.h" // get proxy
#include "Ws_MON_WEB_SERVICESoapBinding.nsmap" // get namespace bindings
int _tmain(int argc, _TCHAR* argv[])
{
Ws_USCOREAuth_USCORESESAMESoapBinding WebService;
soap *soap = soap_new();
_ns1__monOperation requete;
_ns1__monOpération Response reponse;
[...]
soap_wsse_add_UsernameTokenText(soap, "Id", "username", "password");
[...]
int erreur = WebService.__ns1__autorisationSesame(&requete, &reponse);
if(erreur==SOAP_OK)
{
return 1;
}
return 0;
}
Mais voila pour l'utilisation de soap_wsse_add_UsernameTokenText qui provient de wsseapi.h/cpp j'ai un grand nombre d'erreur qui apparait.
J'ai essayé de recompiler wsseapi avec les options -DWITH_DOM et -DWITH_OPENSSL, essayé d'inclure les bibliothèque en cascade sans en venir à bout. j'ai recherché sur différents forum sans succès.
J'aimerais savoir ce que j'ai mal fais ?!?, s'il faut compiler la méthode avec des déclarations, des références supplémentaire ? ou s'il faut implémenter les méthodes de wsseapi dans mon projet?
Merci d'avance.
Nicolas