Послать get post запрос в mql: mql_requests

18 февраля 2021 г. 6:02

В mql4 и mql5 для отправки простого get или post запроса можно использовать стандартную функцию WebRequest() или функции библиотеки wininet.dll.

Каждый способ имеет свои некоторые неудобства:

  • При использовании WebRequest приходится дополнительно в настройках терминала (Меню\Сервис\Настройки во вкладке Советники) разрешать использование WebRequest и вписывать url, с которым WebRequest будет работать.
  • Если использовать wininet.dll, то требуется написать приличное количество строк кода даже для обычного get запроса.

Для простой отправки get и post запросов я написал библиотеку mql_requests, использующую функции библиотеки wininet.dll. mql_requests находится на гитхабе:
https://github.com/vivazzi/mql_requests

Установка mql_requests

Скачайте библиотеку и скопируйте папку mql_requests/Include/requests в <TERMINAL DIR>/MQL(4/5)/Include.

Использование

С помощью mql_requests вы можете простым способом отправлять get и post запросы:

#include "lib/requests.mqh"

int OnInit(){
    ...
    
    Requests requests;

    // get запрос
    Response response = requests.get("https://site.com/some/url?par=foo&par_2=bar");
    Print("Response: " + response.text);
    // Response: some_response_of_url

    Print("Response parameters: " + response.parameters);
    // Response query: par=foo&par_2=bar

    // post запрос
    response = requests.post("https://site.com/some/url", "par=foo&par_2=bar");
    Print(response.text);
}

Для удобства get или post параметров можно использовать класс RequestData, который входит в пакет mql_requests:

RequestData request_data;
request_data.add("par", "foo");

Requests requests;
Response response = requests.get("https://site.com/some/url", request_data);
Print("Response: " + response.text);
// Response: some_response_of_url

Print("Response parameters: " + response.parameters);
// Response parameters: par=foo

Тестирование get и post запросов

Для тестирования ваших программ и приложений (не только на mql) вы можете использовать мною разработанный сервис отправки GET и POST запросов: Сервис GET POST запросов: Getest

Это полезно, когда нужно быстро убедиться, что ваш код и/или какая-то библиотека (в том числе mql_requests) работает:

RequestData request_data;
request_data.add("par", "foo");

Requests requests;
Response response = requests.get("https://vivazzi.pro/test-request/", request_data);
Print("Response: " + response.text);
// Response: OK,GET,query_string par_1=foo&par_2=bar

response = requests.post("https://vivazzi.pro/test-request/", request_data);
Print("Response: " + response.text);
// Response: OK,POST,body par_1=foo&par_2=bar

В зависимости от типа запроса тестовый url https://vivazzi.pro/test-request/ выдаёт соответствующую информацию. Получив такую информацию в своей программе, вы убедитесь, что ваш написанный код работает.

Буду рад, если разработанный пакет mql_requests для mql окажется для вас полезным!

В README.md пакета на гитхабе вы можете найти более полную и актуальную документацию mql_requests:
https://github.com/vivazzi/mql_requests

Оцените статью

5 из 5 (всего 1 оценка)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Права на использование материала, расположенного на этой странице https://vivazzi.pro/it/requests-mql/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="https://vivazzi.pro/it/requests-mql/">https://vivazzi.pro/it/requests-mql/</a>

Подробнее: Правила использования сайта

Комментариев: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментрирования от своего имени, войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц