Послать get post запрос в mql: mql_requests
18 февраля 2021 г. 11: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
13.11.2022 9:03 #
Ошибка на ошибке, причем масса очень глупых ошибок.
Это не правильно #include
Правильно #include
Это вообще что то новенькое GetLastError(err) - НЕ правильно...
GetLastError() - Правильно...
И Вишенка на торте, критическая ошибка:
Ответить
20.11.2022 12:02 #
Влад, благодарю за обратную связь!
Насчёт
#include
не понял. Видимо редактор съел какую-то часть слов...Насчёт GetLastError - да, согласен. Тут я добавил лишнег о Насчёт фатальной ошибки: возможно, это на mql5 был запущен код. Я для mql4 писал. Я попробую воспроизвести ошибку
Ответить
20.11.2022 12:03 #
Если сделаете PR, буду вам признателен за решение ошибок!
Ответить
10.07.2023 10:53 #
Артем, добрый день ! Поддерживаю Влада. Переход на mql 5 легко поправляться для GetLastError. Но критичная ошибка при запуске 2023.07.10 13:35:12.121 CryptoPred (EURUSD,M20) Access violation at 0x00007FFE071D1F34 read to 0x0000024500000000 in 'wininet.dll '
у меня повторилась тоже. Что с ней делать ? Если дадите свой мейл или телеграм (лучше) - я пришлю Вам необходимые детали
Ответить
10.07.2023 11:35 #
При чем при отладке все ок. А при реальной работе вот такая ошибка падает
Ответить