関数WebRequest()の使い方(MQL4)

関数WebRequest()

書式

int  WebRequest(
	const string  method,         // HTTPメソッド 
	const string  url,            // URL
	const string  cookie,         // cookie
	const string  referer,        // リファラ
	int           timeout,       // タイムアウト
	const char    &data[],        // HTTPメッセージ本体の配列 ※参照渡し
	int           data_size,     // data[]配列のサイズ(バイト単位)
	char          &result[],      // サーバーの応答データを含む配列 ※参照渡し
	string        &result_headers // サーバー応答のヘッダ ※参照渡し
	);

戻り値

戻り値はwebリクエストに失敗したら-1を返します。

Webにデータを送信するサンプル

このサンプルに乗っているurlはローカルのPHPを動かしているものです。
XAMPPで動かしています。でプロジェクト名がWebPostTESTです。
WebPostTEST/index.phpということです。

string account_str = "accountnumber="+AccountInfoInteger(ACCOUNT_LOGIN)  //口座番号
				+"&accountcompany="+AccountInfoString(ACCOUNT_COMPANY)   //業者名
				+"&accountname="+AccountInfoString(ACCOUNT_NAME)         //口座開設者名
				+"&isdemo="+IntegerToString(IsDemo());                   //デモ口座かどうか ture=0, false=1

string method = "POST";                     // HTTPメソッド 
string url="http://localhost/WebPostTEST/"; // URL
string cookie=NULL;                         // cookie
string referer=NULL;                        // リファラ
int    timeout=5000;                        // タイムアウト
char   data[];                              // HTTPメッセージ本体の配列 ※参照渡し
int    data_size=0;                         // data[]配列のサイズ(バイト単位)
char   result[];                            // サーバーの応答データを含む配列 ※参照渡し
string result_headers;                      // サーバー応答のヘッダ ※参照渡し
	
StringToCharArray( account_str, data ,0,-1,CP_UTF8);        //文字列をchar配列に変換
int res = WebRequest(method,url,cookie,referer,timeout,
					data,data_size,result,result_headers);

if(res==-1){
	Print("WebRequest::",GetLastError());   //errorをお知らせ
}else{
	CharArrayToString(result,0,-1,CP_UTF8); //char配列を文字列に変換
}

PHP側で受け取るサンプル

MQL4のWebRequest()は非同期通信なので、php側で参照することはできません。
しかしこのデータをデータベースに挿入すれば値が入ります。

function setPostVal($param){
	if(!isset($_POST[$param])){
		$data = 0;
	}else{
		$data   = $_POST[$param];
	}
	return $data;
}

$accountnumber=setPostVal("accountnumber");
$accountcompany=setPostVal("accountcompany");
$accountname=setPostVal("accountname");
$isdemo=setPostVal("isdemo");

実際に動かすには、mt4に通信先のurlを追加しなくてはいけません。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする