人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C#で自動ログインし、作業させるプログラムを組んでいます。
しかし、セッションが保持されないのかログイン後Webbrowser.Navigateで別ページに飛ぶと、「ログインしてください」と出てログイン状態が保持されません。
ページ内のリンクをクリックして別ページに飛ぶと正常に動きます。(webbrowser.document.all.getelementbytagname.InvokeMember("click")等で)

これをどうにかWebbrowser.Navigateで正常に動かす方法はないでしょうか?
よろしくお願いします。

●質問者: after_333sec
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ALL C# Click クリック セッション
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● todo36
●50ポイント

IEでログインして、URLを直接打つとどうなりますか?

それでログインが切れるなら REFERER をチェックしていることが考えられます。

> ページ内のリンクをクリックして別ページに飛ぶと正常に動きます。

C#側でページにリンクを追加してクリックする。

Webbrowser.Navigate("javascript:var a=document.createElement('a');a.href="hoge.html";document.body.appendChild(a);a.click();")


2 ● えふしん
●50ポイント

的外れだったら申し訳ないのですが、WebBrowserコントロールはcookieを自動でハンドリングしてくれるのでしょうか?次回リクエスト時にセッション変数を持ち回すためのクッキーを送信しないとセッションは維持されませんが、その辺は自動でハンドリングされるものなのでしょうか?

もしくは、Webサイト側の画面遷移がPOSTで動いているということはないでしょうか?asp.netのpostbackなどを使っていて、GETリクエストではサイトの側が動かないなどはないでしょうか?(多分、navigateメソッドはGETリクエストを発行すると思います)

古い知識で回答してしまったので、的外れだったらごめんなさい。あえて一般論としては、まずは何よりコントロールの問題か、Webサイトのアーキテクチャの問題かを切り分けるということになると思います。


3 ● happybirth
●50ポイント

ログイン状態が保持できないのは、まずクッキーが送られてないことを疑うべきです。

Navigateの4番目の引数で、リクエストヘッダーを指定できるようなので、

明示的にクッキーを送ればいいのではないでしょうか。

こんな感じですかね。

webrowser.Navigate(url, null, null, "Cookie: " +webbrowser.document.cookie + "\r\n")


4 ● km1981
●50ポイント

次の情報が参考になると思います

http://social.msdn.microsoft.com/forums/ja-JP/csharpgeneralja/thread/f8e740ab-ff9b-46a4-b274-7e1805315ce4/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ