##環境
言語:C#
フレームワーク:.NET Framework 4.5.1
コンソールアプリケーション
##困っている事
以下のサイトにHTTPClient でログインしたいと考えています。
https://www.traderswebfx.jp/login.aspx?from=/
Postリクエストで200 OK の結果は返ってきますが、クッキーが取得できません。
FormUrlEncodedContentにログインID・パスワードをセットし、
リクエストヘッダーをセットすればよいと考えておりますが知識が乏しく、何が必要かがあまり理解出来ておりません。
何が足りていないのでしょうか。
また、リクエストヘッダーはクッキー以外はこちらで全てセットする必要があるのでしょうか。
C#
1class Program 2{ 3 private static HttpClient _httpClient; 4 private const string LOGIN_ADDRESS = "https://www.traderswebfx.jp/login.aspx?from=/join/default.aspx"; 5 6 static async Task Main(string[] args) 7 { 8 InitializeDefaultValues(); 9 await GetRequest(); 10 } 11 12 private static void InitializeDefaultValues() 13 { 14 ServicePointManager.DefaultConnectionLimit = int.MaxValue; 15 _httpClient = new HttpClient 16 { 17 Timeout = Timeout.InfiniteTimeSpan, 18 }; 19 20 _httpClient.DefaultRequestHeaders.Add("accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); 21 _httpClient.DefaultRequestHeaders.Add("accept-encoding", @"gzip, deflate, br"); 22 _httpClient.DefaultRequestHeaders.Add("accept-language", @"ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7"); 23 _httpClient.DefaultRequestHeaders.Add("cache-control", @"max-age=0"); 24 _httpClient.DefaultRequestHeaders.Add("user-agent", @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"); 25 _httpClient.DefaultRequestHeaders.Add("origin", "https://www.traderswebfx.jp"); 26 _httpClient.DefaultRequestHeaders.Add("referer", "https://www.traderswebfx.jp/login.aspx?from=/"); 27 } 28 private static async Task GetRequest() 29 { 30 CookieContainer cc; 31 using (var handler = new HttpClientHandler()) 32 { 33 34 //ログイン用のPOSTデータ生成 35 var content = new FormUrlEncodedContent(new Dictionary<string, string> 36 { 37 {"login_id", "id"}, 38 {"login_pw", "password"}, 39 }); 40 content.Headers.ContentType = new MediaTypeWithQualityHeaderValue(@"application/x-www-form-urlencoded"); 41 content.Headers.ContentLength = 39; 42 43 //ログイン 44 var request = await _httpClient.PostAsync(LOGIN_ADDRESS, content); 45 if (request.IsSuccessStatusCode) 46 { 47 //クッキー保存 48 cc = handler.CookieContainer; 49 var cookies = cc.GetCookies(new Uri(LOGIN_ADDRESS)); 50 51 foreach (Cookie c in cookies) 52 { 53 Console.WriteLine("クッキー名:" + c.Name.ToString()); 54 Console.WriteLine("クッキーを使うサイトのドメイン名:" + c.Domain.ToString()); 55 Console.WriteLine("クッキー発行日時:" + c.TimeStamp.ToString() + Environment.NewLine); 56 } 57 var fuga = 0; 58 } 59 else 60 { 61 } 62 } 63 } 64}
回答1件
あなたの回答
tips
プレビュー