Bonjour!!
Je suis en train d'effectuer des tests pour mettre en oeuvre une connexion sécurisée avec wininet.
Le principe est simple : je me connecte sur le serveur pour ouvrir une certaine url et je récupère son contenu.
Quand je le fais en http cela fonctionne nickel par contre une fois que je paramètre pour https, çà ne fonctionne plus et je n'arrive pas à récupérer le fichier!!!
quelqu'un saurait d'où vient mon pb?
une partie de mon code:
const char szHeaders[] = "Accept: text/*\r\nUser-Agent: Opendisc\r\n";
HANDLE hSession, hConnection, hRequest;
AnsiString stream = "";
//
Memo1->Lines->Clear();
hSession = InternetOpen(OPENDISC_SOFTWARE_APP_NAME, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hSession)
{
//
hConnection = InternetConnect(hSession, OPENDISC_REMOTE_HOST, INTERNET_DEFAULT_HTTPS_PORT|INTERNET_FLAG_EXISTING_CONNECT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if (hConnection)
{
//
//hRequest = HttpOpenRequest(hConnection, "GET", "test.asp?test=123456", HTTP_VERSION, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT, 0);
hRequest = HttpOpenRequest(hConnection, "GET", "default.asp?test=123456", HTTP_VERSION, NULL, NULL, INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, 0);
if (hRequest)
{
char szBuffer[4096];
DWORD dwLen = 4096;
//
HttpAddRequestHeaders(hRequest, szHeaders, strlen(szHeaders), HTTP_ADDREQ_FLAG_ADD);
HttpSendRequest(hRequest,NULL,0,NULL,0);
if (HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE, szBuffer, &dwLen, NULL))
{
DWORD dwStatusCode = (DWORD)atol((char *)szBuffer);
//
DWORD dwNumberOfBytesToRead = 4096, lpNumberOfBytesRead;
CHAR * szBuffer[4096];
do
{
memset(szBuffer, 0x0, 4096);
if (!InternetReadFile(hRequest,szBuffer,dwNumberOfBytesToRead,&lpNumberOfBytesRead))
break;
else
stream += ((LPCTSTR)szBuffer);
}
while (lpNumberOfBytesRead == 4096);
//
if (stream.Length() > 0) Memo1->Lines->Append(stream);
}
}
}
//
InternetCloseHandle(hSession);
}
//
if (!Memo1->Lines->Count)
{
Memo1->Lines->Add("error");
}
}