0
1 787
WebRequest関数からHTTPリクエストを送る方法をちょっとはまったのでメモ。WebRequestはどうやらプログラムで呼んだだけではダメで、下記の手順でMT4に設定をしてやらなければならないようです。
- メニューの ツール→オプション→エキスパートアドバイザ→「WebRequestを許可するURLリスト:」をチェック
- 「+新しい URL を追加、例えば 'https://www.mql5.com' のように」をクリック。
- 許可したいURL(ドメインでOK)を追加。
追記:しかも、EAかスクリプトからしか送れないらしい。。。
>The function can be called only from Expert Advisors and scripts, as they run in their own execution threads.
下記はテストスクリプト。
#include <stderror.mqh> #include <stdlib.mqh> void OnStart() { string cookie; string body = ""; char request_body[]; int request_body_len = 0; char result[]; string response_headers; string response_body; int res; ResetLastError(); res = WebRequest("GET", "http://www.example.com/", cookie, NULL, 5000, request_body, request_body_len, result, response_headers); if (res == -1) { Print("Error in WebRequest. ", ErrorDescription(GetLastError())); } else { response_body = CharArrayToString(result); } Print(res); Print(response_body); Print(response_headers); }