Winhttp

cs_mitali Messages postés 18 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 22 février 2011 - 17 juil. 2007 à 12:50
ShareVB Messages postés 2676 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;}

4 réponses

The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
17 juil. 2007 à 16:48
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
0
cs_mitali Messages postés 18 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 22 février 2011
17 juil. 2007 à 20:58
merci pour l'aide
0
cs_mitali Messages postés 18 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 22 février 2011
17 juil. 2007 à 21:02
 
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;


}
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
22 juil. 2007 à 12:42
salut,

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

ShareVB
0
Rejoignez-nous