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);
            }