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;
}