 |
|
Отправка POST запросов. WinRT
Добрый день.
При отправке 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. Помогите разобраться!
|
попробуй сделать POST браузером через веб-форму, посмотри запрос-ответ
|
pva, а можно поподробнее, что вы имеете ввиду? я так сказать, только начинающий, в работе с GET/POST запросами.
|
Нашел причину неработоспособности кода - отсутствие 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");
Работает!
Видимо, в выходные нужно отдыхать)
|
Время: 15:19.
© OSzone.net 2001-