WebRequest関数からリクエストを送る方法

6 9月 2016, 12:47
Minoru Hiki
0
1 760

WebRequest関数からHTTPリクエストを送る方法をちょっとはまったのでメモ。WebRequestはどうやらプログラムで呼んだだけではダメで、下記の手順でMT4に設定をしてやらなければならないようです。

 

  1. メニューの ツール→オプション→エキスパートアドバイザ→「WebRequestを許可するURLリスト:」をチェック
  2. 「+新しい URL を追加、例えば 'https://www.mql5.com' のように」をクリック。
  3. 許可したい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);
}

 


それを友達とシェアしてください: