スタッフブログ
セールで買ったシルバーアクセサリーの福袋が割と当たりだったhaltです.
C#のHttpWebRequestクラスを利用するとGETやPOSTによるHTTP通信を行う事ができます.以下は割と適当に書いたHttpPostを行うメソッドです.
(Cookieはメンバ変数から拾っているのでそのままでは動作しません)
第一引数に送信先のurlを指定し,第二引数に送信する内容をDictionary形式で指定する事で,データを送信する事ができます.
ようは,送信したい値をname=value形式でつないでencodeしたものを付加するのですが,
textareaやtextboxの内容を送信する事はできるのですが,checkboxのような,一つのnameに対して複数の値を持つ要素を送信する方法がわかりません.
詳しい人に聞いてみた所,checkboxのような複数の値を持つものは,以下のように,送信する数だけname=value形式で連結すれば良いそうです.
となると,キーがuniqueなDictionary形式は使えないですね.専用の構造体を作った方がいいのかもしれません.
C#のHttpWebRequestクラスを利用するとGETやPOSTによるHTTP通信を行う事ができます.以下は割と適当に書いたHttpPostを行うメソッドです.
(Cookieはメンバ変数から拾っているのでそのままでは動作しません)
第一引数に送信先のurlを指定し,第二引数に送信する内容をDictionary形式で指定する事で,データを送信する事ができます.
private string HttpPost(string url, Dictionary<string, string> vals) {
string param = "";
foreach (string k in vals.Keys) {
string key = k.Replace("#", "");
param += String.Format("{0}={1}&", key, vals[k]);
}
byte[] data = Encoding.ASCII.GetBytes(param);
// リクエストの作成
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;
req.CookieContainer = _cookieContainer;
// ポスト・データの書き込み
System.IO.Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
System.Net.WebResponse res = req.GetResponse();
// レスポンスの読み取り
System.IO.Stream resStream = res.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(resStream, encoder);
string result = sr.ReadToEnd();
sr.Close();
resStream.Close();
return result;
}
ようは,送信したい値をname=value形式でつないでencodeしたものを付加するのですが,
textareaやtextboxの内容を送信する事はできるのですが,checkboxのような,一つのnameに対して複数の値を持つ要素を送信する方法がわかりません.
詳しい人に聞いてみた所,checkboxのような複数の値を持つものは,以下のように,送信する数だけname=value形式で連結すれば良いそうです.
my_check=1&my_check=2&my_check=3...
となると,キーがuniqueなDictionary形式は使えないですね.専用の構造体を作った方がいいのかもしれません.