Winhttp

Signaler
Messages postés
18
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
22 février 2011
-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
-
Le code suivant me permet d ouvrir une popup pour authentification par certificat tout ça marche très bien ,mais quand je valide l'authentification je reçoit une erreur dont le code est le suivant 12019 est ça veu dire ;The requested operation cannot be carried out because the handle supplied is not in the correct state.Mais j'ai pas saisi ça!!!
SOS


/******************************************************************************************************************


* Fonction permettant d'envoyer une enveloppe FAST contenant une enveloppe métier *


******************************************************************************************************************/



long



CTiersdeConfianceAuto::ENVOI(LPCTSTR INFO_SESSION, LPCTSTR TYPE_TRANSMISSION, LPCTSTR CHEMIN_FLUX, BSTR FAR* FLUX_RETOUR) {

*FLUX_RETOUR =::SysAllocString(L


"DEBUT"
);BOOL bResults = FALSE;

HINTERNET hSession = NULL,

hConnect = NULL,

hRequest = NULL;

HCERTSTORE hMyStore=NULL,

hCertStore = NULL;

PCCERT_CONTEXT pCertContext=NULL;


long
lRetval=0;


char
szError[1024];

lRetval=SelectCertificateFromStore(


"My"
, NULL, szError, &pCertContext);


// Use WinHttpOpen to obtain a session handle.

hSession = WinHttpOpen( L




"A WinHTTP Example Program/1.0"
, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,

WINHTTP_NO_PROXY_NAME,

WINHTTP_NO_PROXY_BYPASS, 0);


// Specify an HTTP server.






if
(hSession){

hConnect = WinHttpConnect( hSession, L


"192.168.0.50"
,INTERNET_DEFAULT_HTTPS_PORT, 0);

*FLUX_RETOUR =::SysAllocString(L


"WinHttpOpen"
);

}


// Create an HTTP Request handle.






if
(hConnect){

hRequest = WinHttpOpenRequest( hConnect, L


"POST"
, L


"/entreprise/secure/get_cert.php"
, NULL, WINHTTP_NO_REFERER,

WINHTTP_DEFAULT_ACCEPT_TYPES,

0);

*FLUX_RETOUR =::SysAllocString(L


"WinHttpConnect"
);

}


// Send a Request.






if
(hRequest && pCertContext) {

WinHttpSetOption(hRequest, WINHTTP_OPTION_CLIENT_CERT_CONTEXT,

(LPVOID) pCertContext,


sizeof
(CERT_CONTEXT) );


char
err[1024];sprintf(err,


"---->%d "
,GetLastError() );ASCtoBSTR(err, FLUX_RETOUR);

bResults = WinHttpSendRequest( hRequest,

WINHTTP_NO_ADDITIONAL_HEADERS,

0, WINHTTP_NO_REQUEST_DATA, 0,

0, 0);

}


// Close open handles.






if
(hRequest) WinHttpCloseHandle(hRequest);


if
(hConnect) WinHttpCloseHandle(hConnect);


if
(hSession) WinHttpCloseHandle(hSession);


return
1;}

4 réponses

Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

Bonjour,
ben deja ton code est pas indenté, c'est lourd d'aider des personnes qui ne font pas d'effort pour la présentation.

Une autruche ne se cuit pas aux petits lardons
Messages postés
18
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
22 février 2011

merci pour l'aide
Messages postés
18
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
22 février 2011

 
long CTiersdeConfianceAuto::ENVOI(LPCTSTR INFO_SESSION, LPCTSTR TYPE_TRANSMISSION, LPCTSTR CHEMIN_FLUX, BSTR FAR* FLUX_RETOUR)



{              

*FLUX_RETOUR =::SysAllocString(L


"DEBUT" );




          BOOL bResults = FALSE;




       HINTERNET hSession = NULL,




         hConnect = NULL,




      hRequest = NULL;




      HCERTSTORE hMyStore=NULL,




      hCertStore = NULL;




      PCCERT_CONTEXT pCertContext=NULL;
















long lRetval=0;





char szError[1024];





lRetval=SelectCertificateFromStore(


"My" , NULL, szError, &pCertContext);







// Use WinHttpOpen to obtain a session handle.



hSession = WinHttpOpen( L


"A WinHTTP Example Program/1.0" ,

WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,

WINHTTP_NO_PROXY_NAME,

WINHTTP_NO_PROXY_BYPASS, 0);
















// Specify an HTTP server.






if (hSession)


{




hConnect = WinHttpConnect( hSession, L


"192.168.0.50" ,

INTERNET_DEFAULT_HTTPS_PORT, 0);

*FLUX_RETOUR =::SysAllocString(L


"WinHttpOpen" );







}
















// Create an HTTP Request handle.






if (hConnect)


{   


hRequest = WinHttpOpenRequest( hConnect, L


"POST" ,

L


"/entreprise/secure/get_cert.php" ,

NULL, WINHTTP_NO_REFERER,

WINHTTP_DEFAULT_ACCEPT_TYPES,

0);




*FLUX_RETOUR =::SysAllocString(L


"WinHttpConnect" );


}










// Send a Request.






if (hRequest && pCertContext)


{










WinHttpSetOption(hRequest, WINHTTP_OPTION_CLIENT_CERT_CONTEXT,

(LPVOID) pCertContext,


sizeof (CERT_CONTEXT) );


char err[1024];




sprintf(err,


"---->%d " ,GetLastError() );




ASCtoBSTR(err, FLUX_RETOUR);




bResults = WinHttpSendRequest( hRequest,

WINHTTP_NO_ADDITIONAL_HEADERS,

0, WINHTTP_NO_REQUEST_DATA, 0,

0, 0);




}
















// Close open handles.






if (hRequest) WinHttpCloseHandle(hRequest);





if (hConnect) WinHttpCloseHandle(hConnect);





if (hSession) WinHttpCloseHandle(hSession);

















return 1;


}
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
14
salut,

le dernier param de WinHttpOpenRequest ne devrait pas être
WINHTTP_FLAG_SECURE ?

ShareVB