![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ブラウザを立ち上げることなく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;
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> ニコニコ動画の自動ログイン方法が公開されていますのでそれを真似て下記のプログラムを作成し、見かけ上は正常に動作していますが、これって「GetHtml」を呼ぶ度にログイン → ログアウトを繰り返すのでしょうか?
行いません。
ログインの為のHttpPostで得られたCookieをGetHtmlの中で渡しているので。
> また、その確認方法があれば併せてお願いします。
.NETのHTTP通信はFiddlerでキャプチャできます。
http://www.fiddler2.com/fiddler2/
これを起動した状態で実行すると,どのようにアクセスしているのかがわかると思いますよ。
回答、有り難うございました。
そうですか…。ログイン→ ログアウトは繰り返していないですか…。
実はウエブサイト管理者から連絡があって1日に40万回以上のログイン→ ログアウトが繰り返えされたとのことで、原因を探っているのですが犯人はこの部分くらいしか見当たらなかったもので…。
だとすると原因は何なんでしょうねぇ。逆に困ってしまいました。
何かお気づきのことがありましたら再度ご教示頂けると有難いです。
取り敢えず、紹介して頂いたFiddlerで探ってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#での関数テーブルの作り方
-
GridViewで複数のDropDownList...
-
C#でIPアドレスの取得について
-
「指定されたキャストは有効で...
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
EXCEL VBA で、0から?1から?
-
JSPやサーブレットでSystem.out...
-
ActionForm form にnullが入っ...
-
Java配列でNullPointerExceptio...
-
オブジェクトの中のプロパティ...
-
パソコンキーボードで時分秒を...
-
大量のデータを読み込んで表示...
-
数字文字列をパック10進数に変...
-
privateなフィールドは継承され...
-
javaで質問です。 文字列2023/2...
-
IF関数でEmpty値を設定する方法。
-
StrutsでJSPからListを受け取り...
-
戻り値を使用する呼出
-
論理演算子”||”またはの入力方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字列が一致する行から...
-
C# ListBoxのアイテムをユーザ...
-
strcmp関数などでの複数の文字...
-
【Java8以降】csvファイルの複...
-
C#での関数テーブルの作り方
-
C#でIPアドレスの取得について
-
「指定されたキャストは有効で...
-
マルチスレッドで同時にFTPアッ...
-
C# JSONについて
-
Delphiで改行文字の置換がうま...
-
C#でプロパティを使わずXMLにデ...
-
C++におけるポインターと変数の...
-
jap実行時のTomcatのエラーに困...
-
C# で、あるフォルダー内にある...
-
決まった拡張子のファイルだけ...
-
strtokでの空文字への置き換え
-
c言語
-
javascript初心者
-
python文字列置換について。
-
strncpy後のatoiがおかしい
おすすめ情報