Цитата:
Попробуйте этот код.
В нём хендлы не там закрываются, хотя на работоспособность не влияет. И format возвращает весь массив, т. к. InternetReadFile не дописывает 0.
Исправленный код, добавил вывод ошибок:
code (Отобразить)
CODE:
#define NULL 0
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 443
#define INTERNET_SERVICE_HTTP 3
#define INTERNET_FLAG_SECURE 8388608
#define INTERNET_FLAG_NO_CACHE_WRITE 67108864
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll");
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll");
external(INT, "HttpOpenRequest", "HttpOpenRequestA", "Wininet.dll");
external(INT, "HttpSendRequest", "HttpSendRequestA", "Wininet.dll");
external(INT, "InternetReadFile", "InternetReadFile", "Wininet.dll");
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll");
string ServerName = "api.telegram.org";
string ObjectName = "botТУТ ТОКЕН/getMe"; // ввести токен
int hInternet = InternetOpen("My bot",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if (hInternet != NULL) // открываем HTTP сессию
{
int hConnect = InternetConnect(hInternet,ServerName,INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1);
if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(hConnect, "POST", ObjectName, NULL,NULL, 0, INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,1);
if (hRequest != NULL) // посылаем запрос
{
int bSend = HttpSendRequest(hRequest,NULL,0,NULL, 0);
string fr="";
char szData[1024];
int dwBytesRead;
wwwww1:;
int bRead = InternetReadFile(hRequest, address(#szData[0]), sizearray(szData)-1, address(#dwBytesRead));
if (bRead == FALSE)messagebox("InternetReadFile error");
fr=fr+format(#szData[0], dwBytesRead);
if (bRead == FALSE || dwBytesRead == 0) goto Fs;
goto wwwww1;
Fs:;
messagebox (fr);
InternetCloseHandle(hRequest);// закрываем запрос
}
else messagebox("HttpOpenRequest error");
InternetCloseHandle(hConnect);// закрываем сессию
}
else messagebox("InternetConnect error");
InternetCloseHandle(hInternet);// закрываем WinInet
}
else messagebox("InternetOpen error");
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 443
#define INTERNET_SERVICE_HTTP 3
#define INTERNET_FLAG_SECURE 8388608
#define INTERNET_FLAG_NO_CACHE_WRITE 67108864
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll");
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll");
external(INT, "HttpOpenRequest", "HttpOpenRequestA", "Wininet.dll");
external(INT, "HttpSendRequest", "HttpSendRequestA", "Wininet.dll");
external(INT, "InternetReadFile", "InternetReadFile", "Wininet.dll");
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll");
string ServerName = "api.telegram.org";
string ObjectName = "botТУТ ТОКЕН/getMe"; // ввести токен
int hInternet = InternetOpen("My bot",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if (hInternet != NULL) // открываем HTTP сессию
{
int hConnect = InternetConnect(hInternet,ServerName,INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1);
if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(hConnect, "POST", ObjectName, NULL,NULL, 0, INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,1);
if (hRequest != NULL) // посылаем запрос
{
int bSend = HttpSendRequest(hRequest,NULL,0,NULL, 0);
string fr="";
char szData[1024];
int dwBytesRead;
wwwww1:;
int bRead = InternetReadFile(hRequest, address(#szData[0]), sizearray(szData)-1, address(#dwBytesRead));
if (bRead == FALSE)messagebox("InternetReadFile error");
fr=fr+format(#szData[0], dwBytesRead);
if (bRead == FALSE || dwBytesRead == 0) goto Fs;
goto wwwww1;
Fs:;
messagebox (fr);
InternetCloseHandle(hRequest);// закрываем запрос
}
else messagebox("HttpOpenRequest error");
InternetCloseHandle(hConnect);// закрываем сессию
}
else messagebox("InternetConnect error");
InternetCloseHandle(hInternet);// закрываем WinInet
}
else messagebox("InternetOpen error");