-
Похожий контент
-
- 4 ответа
- 3 094 просмотра
-
[DELPHI FMX Android] [6.0] Не удается загрузить SSL библиотеку 1 2
От bossalex,
- delphi fmx
- ssl
- (и ещё 2 )
- 46 ответов
- 13 429 просмотров
-
- 1 ответ
- 2 461 просмотр
-
- 0 ответов
- 3 262 просмотра
-
- 10 ответов
- 6 888 просмотров
-
- 7 ответов
- 5 212 просмотра
-
- 4 ответа
- 5 785 просмотров
-
- 8 ответов
- 9 895 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
rareMax
Плоховато знаю особенности интернет протоколов. Необходимо с помощью TidHTTP открыть следующий URL:
Вылетает ошибка:
Код, с помощью которого подключаюсь:
unit vkAPI.Core.Requests; interface uses System.Classes; Type TRequestMng = Class(TComponent) Private Const VK_MIN_INTERVAL = 1000 / 3 + 1; (* Параметры могут передаваться как методом GET, так и POST. Если вы будете передавать большие данные (больше 2 килобайт), то следует использовать метод POST. *) VK_MAX_GET_LENTHG = 2000; private fisSSL: Boolean; fLastAPIusage: TDateTime; protected function BetwenMS(Now, Old: TDateTime): integer; public constructor Create(AOwner: TComponent); override; Function Get(Const URL: String): String; published property IsSSL: Boolean read fisSSL write fisSSL default False; End; implementation uses vkAPI.Core.Utils, idHTTP, IdSSLOpenSSL, System.SysUtils; { TRequestMng } function TRequestMng.BetwenMS(Now, Old: TDateTime): integer; begin Result := Round((Now - Old) * 24 * 60 * 60 * 1000); end; constructor TRequestMng.Create(AOwner: TComponent); begin inherited Create(AOwner); fisSSL := False; end; function TRequestMng.Get(const URL: String): String; var fHTTP: TIdHTTP; fSSL: TIdSSLIOHandlerSocketOpenSSL; begin fHTTP := TIdHTTP.Create; // if IsSSL then begin fSSL := TIdSSLIOHandlerSocketOpenSSL.Create(fHTTP); fHTTP.IOHandler := fSSL; fHTTP.AllowCookies := True; fHTTP.HandleRedirects := True; end; try if URL.Length > VK_MAX_GET_LENTHG then raise Exception.Create ('Если вы будете передавать большие данные (больше 2 килобайт), то следует использовать метод POST. '); if BetwenMS(Now, fLastAPIusage) < VK_MIN_INTERVAL then begin Sleep(BetwenMS(Now, fLastAPIusage)); end; Result := fHTTP.Get(URL); fLastAPIusage := Now; finally // if IsSSL then FreeAndNil(fSSL); FreeAndNil(fHTTP); end; end; end.Код программы:
program Project4; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, vkAPI.Core.Requests in 'vkApi\vkAPI.Core.Requests.pas'; Var VK: vkAPI.Core.Requests.TRequestMng; begin VK := TRequestMng.Create(nil); try { TODO -oUser -cConsole Main : Insert code here } (VK.Get('https://oauth.vk.com/authorize?client_id=491792444&scope=offline' + '&redirect_uri=https://oauth.vk.com/blank.html&display=mobile&' + 'v=5.28&response_type=token')); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; VK.Free; end.3 ответа на этот вопрос
Рекомендуемые сообщения