Winhttp

Messages postés
18
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
22 février 2011
- - Dernière réponse : ShareVB
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
- 22 juil. 2007 à 12:42
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;}
Afficher la suite 

4 réponses

Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007
0
Merci
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
Commenter la réponse de The_Guardian
Messages postés
18
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
22 février 2011
0
Merci
merci pour l'aide
Commenter la réponse de cs_mitali
Messages postés
18
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
22 février 2011
0
Merci
 
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;


}
Commenter la réponse de cs_mitali
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
0
Merci
salut,

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

ShareVB
Commenter la réponse de ShareVB