WebRequest()を使うときの注意点

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);
}

関連記事一覧:トレードデータをデータベースに入れるコードのみ

シェアする

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

フォローする