Topic: Как послать запрос к HTTP серверу и получить ответ?

Каким образом реализовать в MVD следующий php код?

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);

    $header[0] = "Authorization: whm $user:$token";
    curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
    curl_setopt($curl, CURLOPT_URL, $query);

    $result = curl_exec($curl);

    $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

Re: Как послать запрос к HTTP серверу и получить ответ?

здесь примеры
http://myvisualdatabase.com/forum/viewtopic.php?id=5433

3 (edited by vovka3003 2020-05-25 18:14:02)

Re: Как послать запрос к HTTP серверу и получить ответ?

mikhail_a wrote:

Каким образом реализовать в MVD следующий php код?

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);

    $header[0] = "Authorization: whm $user:$token";
    curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
    curl_setopt($curl, CURLOPT_URL, $query);

    $result = curl_exec($curl);

    $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

const url = 'https://your-site.hz';  
      user = 'юзернейм';
      token = 'токен';


var whr : Variant;


procedure HTTPRequest(Sender:TObject);
begin
 TdbButton(Sender).Enabled := false; 
try
    try

        // Эквивалент $curl = curl_init();
        whr := CreateOleObject('WinHttp.WinHttpRequest.5.1');

        // Эквивалент curl_setopt($curl, CURLOPT_URL, $query);
        whr.open('GET', url, true);

        // Эквивалент CURLOPT_SSL_VERIFYPEER и curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0);
        whr.Option(4) := 13056;

        // CURLOPT_RETURNTRANSFER - не требуется

        // Эквивалент $header[0] = "Authorization: whm $user:$token";
        whr.SetRequestHeader('Authorization',Format('whm %s:%s',[user,token]));

        // Эквивалент curl_exec($curl);
        whr.Send();

        whr.WaitForResponse(5);  // таймаут ожидания ответа в секундах

        //  Эквивалент curl_getinfo($curl, CURLINFO_HTTP_CODE);
        ShowMessage(whr.Status)

    except
      // ShowMessage(ExceptionMessage);  // раскомментить для просмотра ошибок
    end;
finally
   TdbButton(Sender).Enabled := true; 
    whr := 0;
end;
end;


procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
    HTTPRequest(Sender);
end;

begin        

end.

Re: Как послать запрос к HTTP серверу и получить ответ?

Спасибо огромное, vovka3003!
Ваш скрипт рабочий!
Стоит задача закинуть базу MySQL на хостинг, чтобы к ней сотрудники имели доступ и из дома.
У хостинга есть панель управления CPanel.
В ней надо указывать IP адреса удаленных подключений к БД.
Но, народ подключается с динамических IP, поэтому приходилось сначала определять IP клиента, потом через браузер логиниться в CPanel, ручками указывать IP удаленного клиента и только потом работать с приложением.
Теперь все проще!
Создал API токен в CPanel (позволяет выполнять функции в Cpanel без пароля).
Скриптом авторизуемся в Cpanel:
whr.SetRequestHeader('Authorization',Format('cpanel %s:%s',[user,token]))
и выполняем добавление удаленного хоста:

url = 'https://mysite.ru:2083/execute/Mysql/add_host?host=124.124.124.124'

5 (edited by vovka3003 2020-05-26 22:21:46)

Re: Как послать запрос к HTTP серверу и получить ответ?

mikhail_a wrote:

Стоит задача закинуть базу MySQL на хостинг, чтобы к ней сотрудники имели доступ и из дома.

А ssh-туннель на putty не..? Одна строчка в параметре запуска и база у всех по адресу 127.0.0.1:3306...
И не надо никах whm-ов cPanel-ных с мудреными проверками...