関数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を追加しなくてはいけません。
