はじめに:最近のHttpClientを使用して、同社は、オブジェクトは、HttpWebRequestの以前の放棄要求を送信するのHttpClientを使用する利点があります:あなたが唯一のすべての要求されたデータ(アドレス、リクエストデータ、タイプ、クッキーなど)を送信完了すること、のHttpClientのインスタンスを使用できることを。
伝統的なHttpWebRequestのは、各要求は別々のインスタンスを作成する必要があり、古い問題を回避します:ソケット接続解除はタイムリーな問題ではありません。
以下は、主にプロセスの使用では、他の中毒者の記事に転送され、自分の必要性がクッキーにターゲットサーバへのカスタムを送信するのではなく、生と死が過去に送信されていない、最後のBaiduの他の仲間の記事が見つかりました。つまり、あなたは自分のクッキーを送信する必要がある場合あなたは、セットを実行する必要があります。
VARハンドラ=新しいHttpClientHandler(){UseCookies = FALSE;} VARクライアント=新しいHttpClientを(ハンドラ); // {BASEADDRESS = BASEADDRESS};
フェロー記事のアドレス:https://www.cnblogs.com/xiaozhu39505/p/8033108.htmlは、 次のように読み取ります。
2つの一般的なアプローチがあります。
最初handler.UseCookies = true(デフォルトはtrueです)、デフォルトでは、例えば、自分のクッキーをもたらします
VARハンドラ=新しいHttpClientHandler(){UseCookies = TRUE;} VARクライアント=新しいHttpClientを(ハンドラ); // {BASEADDRESS = BASEADDRESS}; client.DefaultRequestHeaders.Add( "ユーザーエージェント"、 "Mozillaの/ 5.0(Windows NTの6.1; Win64の、x64の、RV:57.0)のGecko / 20100101 Firefoxの/ 57.0"); client.DefaultRequestHeaders.Add(「接続」、「キープアライブ」)。 client.DefaultRequestHeaders.Add( "キープアライブ"、 "タイムアウト= 600"); VARの内容=新しいFormUrlEncodedContent(新しいです[] { 新しいKeyValuePair <文字列、文字列>( "メール"、 "XXXX")、 新しいKeyValuePair <文字列、文字列>( "パスワード"、 "XXXX")、 }); VaRの結果=のawait client.PostAsync( "https://www.xxxx.com/cp/login"、コンテンツ)。 result.EnsureSuccessStatusCode();
成功した着陸した後、この場合のPOSTリクエスト、他のページへのリダイレクトは、自動的にクッキーをもたらすでしょう。handler.UseCookiesをfalseに設定した場合の着陸は自動的にクッキーをもたらすものではありませんした後、その後、リダイレクトすることは、それがランディングページにジャンプします。
第二セットhandler.UseCookies = falseの場合、手動ヘッダクッキーに加えます。
VARハンドラ=新しいHttpClientHandler(){UseCookies = FALSE;} VARクライアント=新しいHttpClientを(ハンドラ); // {BASEADDRESS = BASEADDRESS}; VARメッセージ=新しいHttpRequestMessage(HttpMethod.Get、URL); message.Headers.Add( "クッキー"、 "SESSION_ID = 7258abbd1544b6c530a9f406d3e600239bd788fb")。 VaRの結果=のawait client.SendAsync(メッセージ)。 result.EnsureSuccessStatusCode();
シーンがある場合は、次のウェブページデータを参照するには、ログインにクロールが必要、我々は最初の使用をお勧めします、任意のクッキーを設定する必要はありません、HTTPClientのクッキーは自動的にリクエストの背中に着陸した後に配置されます。