.NET - [решено] Отправка POST запросов. WinRT

Ответить
 • Просмотры: 1
Аватара пользователя
LilLoco

.NET - [решено] Отправка POST запросов. WinRT

Сообщение LilLoco »

Добрый день.



При отправке POST запроса к серверу получаю ответ: StatusCode: 406, ReasonPhrase: 'Not Acceptable'

При помощи Fiddler просматриваю запросы. Выглядит так:



HTML код:

Код: Выделить всё

POST сервер HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: сервер
Accept-Language: ru,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: l***
Content-Length: 221
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=28847AE460F24E8F4EAD85CD0A2F3DA9; JSESSIONID=858E247EE14B369C9EB0718054DA2888; ip.t=ae3aaa6f875e9597daf242ffeeea9e57; AMAuthCookie=AQIC5wM2LY4SfcwHrDxvqJlHkIHKoy663iRj9jC5zx9RK3A.*AAJTSQACMDQAAlNLAAstMTE0ODg3Mzk1MgACUzEAAjAz*; amlbcookie=01; auth-back-url=https://***/Login?gx_charset=UTF-8
IDToken1=ЛОГИН&IDToken2=ПАРОЛЬ&IDButton=Submit&goto=&encoded=false&loginURL=%2Famserver%2FUI%2FLogin%3Fgx_charset%3DUTF-8%26auth-status%3D0&CSRFToken=ТОКЕН



Создаю такой код:



Код:

Код: Выделить всё

string TextView = "IDToken1=ЛОГИН&IDToken2=ПАРОЛЬ&IDButton=Submit&goto=&encoded=false&loginURL=%2Famserver%2FUI%2FLogin%3Fgx_charset%3DUTF-8%26auth-status%3D0&CSRFToken=" + Token;
            byte[] buf = System.Text.Encoding.UTF8.GetBytes(TextView);
            HttpClientHandler hClient5 = new HttpClientHandler();
            hClient5.UseDefaultCredentials = true;
            hClient5.AllowAutoRedirect = false;
            hClient5.CookieContainer = cc;   // в сс храняться ранее собранные куки
            hClient5.ClientCertificateOptions = ClientCertificateOption.Automatic;
            HttpClient req5 = new HttpClient(hClient5);
            req5.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
            req5.DefaultRequestHeaders.Add("Accept", "*/*");
            req5.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
            HttpContent cont = new StreamContent(new MemoryStream(buf));
            cont.Headers.ContentLength = buf.Length;
            cont.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");
            HttpResponseMessage resp5 = await req5.PostAsync("***/Login?gx_charset=UTF-8&auth-status=0", cont);

В итоге ошибка 406. Помогите разобраться!
Аватара пользователя
pva

Re: .NET - [решено] Отправка POST запросов. WinRT

Сообщение pva »

попробуй сделать POST браузером через веб-форму, посмотри запрос-ответ
Аватара пользователя
LilLoco

Re: .NET - [решено] Отправка POST запросов. WinRT

Сообщение LilLoco »

pva, а можно поподробнее, что вы имеете ввиду? я так сказать, только начинающий, в работе с GET/POST запросами.
Аватара пользователя
LilLoco

Re: .NET - [решено] Отправка POST запросов. WinRT

Сообщение LilLoco »

Нашел причину неработоспособности кода - отсутствие Accept-Language: ru,en-US;q=0.7,en;q=0.3.

Добавил



Код:

Код: Выделить всё

req5.DefaultRequestHeaders.Add("Accept-Language", "ru,en-US;q=0.7,en;q=0.3");

Работает!



Видимо, в выходные нужно отдыхать)
Ответить

Вернуться в «Программирование и базы данных»