Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΠ. ΠΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Ρ ΡΠ°ΠΉΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΡ ΡΠ°ΠΉΡ “ΠΡΡΡΡΠΎΡΠΊΠΈ“. ΠΠ° Π½ΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠ²Π°ΡΠ΅. ΠΡΠΎΡΡΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅ Ρ
ΠΎΡΠ΅Ρ - ΠΏΠΈΡΠ΅Ρ, ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ ΠΌΠ°Π³Π°Π·ΠΈΠ½. ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π·Π°ΠΏΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π΄Π»Ρ WinInet, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. function page_code(nom_page: string): string; var hInet, hCon, hReq: HINTERNET; Status, StatusSize, Index: DWORD; bytes, b, posit: Cardinal; ResponseString: AnsiString; begin URL := 'api/v1/products/'+nom_page+'/'; hInet := InternetOpen('My Agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if not Assigned(hInet) then raise Exception.Create('ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ InternetOpen' + sLineBreak + SysErrorMessage(GetLastError)); try hCon := InternetConnect(hInet, PAnsiChar(Domen), INTERNET_DEFAULT_HTTPS_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0); if not Assigned(hCon) then raise Exception.Create('ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ InternetConnect' + sLineBreak + SysErrorMessage(GetLastError)); try hReq := HttpOpenRequest(hCon, 'GET', PAnsiChar(URL), HTTP_VERSION, nil, nil, INTERNET_FLAG_SECURE or INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_RELOAD, 0); if not Assigned(hReq) then raise Exception.Create('ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ HttpOpenRequest' + sLineBreak + SysErrorMessage(GetLastError)); try HttpSendRequest(hReq,'', 0, nil, 0); StatusSize := SizeOf(Status); Index := 0; HttpQueryInfo(hReq, HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE, @Status, StatusSize, Index); if Status <> HTTP_STATUS_OK then raise Exception.Create('ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ HttpSendRequest' + sLineBreak + 'Π‘ΡΠ°ΡΡΡ: ' + IntToStr(Status) + sLineBreak + SysErrorMessage(GetLastError)); posit := 1; b := 1; ResponseString := ''; while b > 0 do begin if not InternetQueryDataAvailable( hReq, bytes, 0, 0 ) then raise Exception.Create('ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ InternetQueryDataAvailable' + sLineBreak + SysErrorMessage(GetLastError)); SetLength( ResponseString, Length(ResponseString) + bytes ); InternetReadFile( hReq, @ResponseString[Posit], bytes, b ); Inc(Posit, b); end; finally InternetCloseHandle(hReq); end; finally InternetCloseHandle(hCon); end; finally InternetCloseHandle(hInet); end; result:=Utf8ToAnsi(ResponseString) end;.