Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Отправка POST запросов. WinRT (http://forum.oszone.net/showthread.php?t=259979)

LilLoco 05-05-2013 13:41 2144736

Отправка 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. Помогите разобраться!

pva 05-05-2013 17:14 2144841

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

LilLoco 05-05-2013 17:50 2144859

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

LilLoco 06-05-2013 09:04 2145151

Нашел причину неработоспособности кода - отсутствие 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.

Время: 15:19.
© OSzone.net 2001-