Я пытаюсь получить данные в виде текста с веб-сервера. Чтобы получить данные, мне сначала нужен действительный сеанс, а затем сделать запрос POST с идентификатором в теле. Всякий раз, когда я пытаюсь отправить запрос GET, чтобы получить JSessionId, а затем отправить запрос POST с тем же JSessionId, веб-сервер не сохраняет сеанс и вместо этого обрабатывает его как обычный запрос GET и отправляет мне новый JSessionID.
Uri site = new Uri(@"https://example.com");
var cookie = GetJSessionID(site);
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
HttpClient client = new HttpClient(handler);
cookies.Add(new Cookie { Name = "JSESSIONID", Value = cookie.Substring(11).Split(';')[0], Domain = "www.sozialversicherung.at" });
//cookies.Add(new Cookie { Name = "JSESSIONID", Value = "wGyNxVvDewF9i09YmTU3OzGmGIJL6pzn2S1aLq-N.esvp15app2b-webapps-02-webapps-02", Domain = "www.sozialversicherung.at" });
var param = new Dictionary<string, string> { { "dgnr", "201654557"}, {"stichtag", "09.02.2020" } };
var enco = new FormUrlEncodedContent(param);
var res = client.PostAsync(site, enco).Result;
//res.Headers.Where(a => a.Key.Contains("Cookie")).ToList().ForEach(b => b.Value.ToList().ForEach(c => Console.WriteLine(b.Key + ": " + c)));
Console.WriteLine("Result: "+ res.Content.ReadAsStringAsync().Result.Contains("Keyword"));
Console.ReadKey();
Когда я жестко кодирую JSessionId из моего Chrome, веб-сервер обрабатывает его как допустимый сеанс и выдает мне нужные данные.