Веб-сервер не поддерживает сессию - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь получить данные в виде текста с веб-сервера. Чтобы получить данные, мне сначала нужен действительный сеанс, а затем сделать запрос 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, веб-сервер обрабатывает его как допустимый сеанс и выдает мне нужные данные.

...