C#-http ClientアナログログインCookie問題
1941 ワード
シミュレーションではフォワードフォーラムにログインする際にセッションを保持しようとしたが,最初はWebRequesの手法を想定して応答のCookieを取得することで実現しようとした.テストは成功しなかった.後に資料を調べたHttpClientは自動的にCookieを保存し、同じHttpClientリクエストであればログイン状態を維持することができる.次のテストコード
public static void Login()
{
HttpClient httpClient = new HttpClient();//
//httpClient.MaxResponseContentBufferSize = 256000;
httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134");
String url = "http://my.gfan.com/doLogin";
List> paramList = new List>();//
paramList.Add(new KeyValuePair("loginName", "8"));
paramList.Add(new KeyValuePair("password", "do"));
paramList.Add(new KeyValuePair("autoLogin", "0"));
paramList.Add(new KeyValuePair("referer", "http://my.gfan.com/login"));
HttpResponseMessage response = httpClient.PostAsync(new Uri(url), new FormUrlEncodedContent(paramList)).Result;
var cookie = response.Headers.GetValues("Set-Cookie");
String result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(result);
//Get
string url_2 = "http://my.gfan.com/account";
HttpResponseMessage responseMessage = httpClient.GetAsync(new Uri(url_2)).Result;// HttpClient
String result_2 =responseMessage.Content.ReadAsStringAsync().Result;
Console.WriteLine(result_2);
}