WebRequest()を使うときの注意点
StringToCharArray()とCharArrayToString()なんですが、引数の最後の文字コードなんですが初期値はCP_ACPです。
ですがこれをCP_UTF8に指定しないとデータベースに日本語が挿入できません。
もちろんデータベースの文字コードはutf8です。【utf8_general_ci】
関連記事一覧:WebRequest(),StringToCharArray()
実際にWEBページにrequestするにはメタエディタの=>ツール=>オプション=>エキスパートアドバイザ=>”WebRequestを許可するURLリスト”にチェックを入れ=>URLを入力します。
下記のサンプルは送るのみでwebページの内容を含んだ配列は取得できない関数になっています。
なのでWebページに送るだけの時に使用します。
void Transmission(string post_str,string url){
string method = "POST"; // HTTPメソッド GETとPOSTがある
string cookie=NULL; // cookie
string referer=NULL; // リファラ
int timeout=5000; // タイムアウト 5000ミリ秒
char data[]; // HTTPメッセージ本体の配列 ※参照渡し
int data_size=0; // data[]配列のサイズ(バイト単位)
char result[]; // webページの内容を含んだ配列 ※参照渡し
string result_headers; // サーバー応答のヘッダ ※参照渡し
StringToCharArray( post_str, data ,0,-1,CP_UTF8);
int res = WebRequest(method,url,cookie,referer,timeout,
data,data_size,result,result_headers);
if(res==-1){
Print("WebRequest::",GetLastError());
}else{
CharArrayToString(result,0,-1,CP_UTF8);
//Comment(CharArrayToString(result,0,-1,CP_UTF8)); //デバッグ時に使用
}
}
下記のサンプルはwebページに送信かつwebページの内容も取得できます。
string RoundTrip(string post_str,string url){
string method = "POST"; // HTTPメソッド GETとPOSTがある
string cookie=NULL; // cookie
string referer=NULL; // リファラ
int timeout=5000; // タイムアウト 5000ミリ秒
char data[]; // HTTPメッセージ本体の配列 ※参照渡し
int data_size=0; // data[]配列のサイズ(バイト単位)
char result[]; // webページの内容を含んだ配列 ※参照渡し
string result_headers; // サーバー応答のヘッダ ※参照渡し
StringToCharArray( post_str, data ,0,-1,CP_UTF8);
int res = WebRequest(method,url,cookie,referer,timeout,
data,data_size,result,result_headers);
if(res==-1){
Print("WebRequest::",GetLastError());
return "0";
}
return CharArrayToString(result,0,-1,CP_UTF8);
}
下記のサンプルはwebページの内容を取得するだけの関数になっています。
※HTMLタグも一緒に取得されます。
※こちらはGETでないといけません。POSTだとおかしくなるので、、、
string Reception(string url){ string method = "GET"; // HTTPメソッド GETとPOSTがある string cookie=NULL; // cookie string referer=NULL; // リファラ int timeout=5000; // タイムアウト 5000ミリ秒 char data[]; // HTTPメッセージ本体の配列 ※参照渡し int data_size=0; // data[]配列のサイズ(バイト単位) char result[]; // webページの内容を含んだ配列 ※参照渡し string result_headers; // サーバー応答のヘッダ ※参照渡し string post_str; //WEBに送信する内容 StringToCharArray( post_str, data ,0,-1,CP_UTF8); int res = WebRequest(method,url,cookie,referer,timeout, data,data_size,result,result_headers); if(res==-1){ Print("WebRequest::",GetLastError()); return "0"; } return CharArrayToString(result,0,-1,CP_UTF8); }
関連記事一覧:トレードデータをデータベースに入れるコードのみ