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