C#でHP上の特定データを自動更新で抽出したい
ブラウザを立ち上げることなくHPに自動ログイン後、特定の表示データを抽出してリアルタイムに更新表示させたい(ブラウザでは更新ボタンのクリックが必要)。
ニコニコ動画の自動ログイン方法が公開されていますのでそれを真似て下記のプログラムを作成し、見かけ上は正常に動作していますが、これって「GetHtml」を呼ぶ度にログイン → ログアウトを繰り返すのでしょうか?
もし、そうであればそれの回避方法を教えて頂けないでしょうか。(.Close()を呼ばないとか?)
また、その確認方法があれば併せてお願いします。
/// ログイン (起動時1回のみ呼び出し)
public bool LogIn()
{
Hashtable hash = new Hashtable();
hash["username"] = "name";
hash["password"] = "123";
hash["Login"] = "login";
string s_param = "";
foreach (string s in hash.Keys)
{
s_param += string.Format("{0}={1}&", s, hash[s]);
}
HttpPost("Https", s_param);
}
/// POST送信
public void HttpPost(string s_url, string s_param)
{
httpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url);
CookieContainer cookieContainer = new CookieContainer();
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
byte[] data = Encoding.ASCII.GetBytes(s_param);
httpWebRequest.ContentLength = data.Length;
httpWebRequest.Method = "Post";
Stream reqStream = httpWebRequest.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
WebResponse webResponse = httpWebRequest.GetResponse();
Stream resStream = webResponse.GetResponseStream();
encoder = Encoding.GetEncoding("Shift_JIS");
StreamReader streamReader = new StreamReader(resStream, encoder);
spHtml = streamReader.ReadToEnd();
streamReader.Close();
webResponse.Close();
}
/// HTML受信(タイマーイベントで常時呼び出し)
private string GetHtml(string s_url)
{
httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url);
httpWebRequest.CookieContainer = cookieContainer;
webResponse = httpWebRequest.GetResponse();
Stream resStream = webResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(resStream, encoder);
string Html = streamReader.ReadToEnd();
streamReader.Close();
resStream.Close();
return Html;
}