4

CookieContainer も使用して、いくつかの HttpWebRequests と HttpWebResponses を連鎖させています。

このコードは、Cookie 情報を設定する 3 つの異なる「同意する」ページを通過するユーザーをシミュレートし、4 番目のページでユーザー名とパスワードを使用してログインし、5 番目のページで POST (検索) を実行して応答を文字列として返します。

ユーザーが検索を実行するたびにこれらの手順を実行しないように、HttpWebRequest オブジェクトを「ログイン済み」として維持する方法はありますか?

静的として設定できますか? null または Cookie 情報がない場合は、すべての手順を実行できます。これに適したパターンは何ですか?

4

1 に答える 1

5

ログインしているサーバーが Cookie ベースの認証を使用している場合は、認証 Cookie を格納する System.Net.CookieContainer を作成する必要があります。これは非常に簡単です:

CookieContainer container = new CookieContainer();

// Create web request
request.CookieContainer = container;

// Create next web request
nextRequest.CookieContainer = container;

// And so on
...

すべての HttpWebRequest オブジェクトに対して CookieContainer オブジェクトを再利用し、後で使用できるようにメモリに保持します。

CookieContainer はシリアライズ可能であるため、必要に応じてディスクに永続化できます。これにより、ユーザーがアプリケーションを再起動しても Cookie を保持できます。

または、ページが Cookie を使用せず、代わりに URL にセッション ID を保存している場合は、目的のページの URL にセッション ID を渡す必要があります。それをURLに追加するだけで機能するはずです。:-)

于 2009-06-24T07:28:44.077 に答える