
Ramil
27.02.2017
15:55:09

Му
27.02.2017
15:55:27

Илья
27.02.2017
15:55:42
поставьте фидлер и посмотрите, что он на самом деле отправляет и сравните со своим запросом, который работает

Google

Ramil
27.02.2017
15:55:45

Му
27.02.2017
15:56:16

Axm
27.02.2017
15:56:22
используешь WebRequest в 2017 году

Му
27.02.2017
15:56:37
за это где-то умирает котёнок
на каждый твой F5

Artemko
27.02.2017
15:57:10
еще и без using-ов
ни тебе Flush, ни Dispose

Ramil
27.02.2017
15:57:42

Му
27.02.2017
15:57:51
и без асинков

Artemko
27.02.2017
15:57:55
http://stackoverflow.com/a/36727718/55209

Axm
27.02.2017
15:58:34
чем он плох?
это легаси. и попробуй поставить request.ContentLength = prmBytes.Length

Ramil
27.02.2017
15:59:45

Му
27.02.2017
16:00:34
в общем присылай скриншот своего запроса, и запроса хрома

Google

Му
27.02.2017
16:00:43
так можно долго гадать

Илья
27.02.2017
16:00:58
Вобще, если там rest api, рекомендую RestSharp:
RestSharp removes the following pain points:
- Quirks in .NET's HTTP classes (basic authentication is broken, error handling for non-200 responses, etc)
- Automatic deserialization from response data to POCOs
- Simplified API (request.AddParameter(name, value) instead of manually compiling request bodies
- Simplified request/response semantics, especially for async (however, it's opinionated for async and may not meet everyone's needs, in which case I would also suggest evaluating Hammock)

Axm
27.02.2017
16:01:39
401
прости, я не Ванга. могу только предположить, что проблема в кодировке.
RestSharp клевый, кстати. единственное, у него есть странная особенность делать неотключаемый urlencode для всех параметров.

Ramil
27.02.2017
16:03:26
щас сделаю попытку со всеми вашими советами и напишу, что получилось

Илья
27.02.2017
16:04:45
чем он плох?
Вот статейка на тему WebClient vs HttpClient vs HttpWebRequest vs RestSharp
http://www.diogonunes.com/blog/webclient-vs-httpclient-vs-httpwebrequest

Slava
27.02.2017
16:07:41
Чуть не подавился: HttpClient - no progress reporting for download

Ramil
27.02.2017
16:11:18

Artemko
27.02.2017
16:11:38

Ivan
27.02.2017
16:17:24

Ramil
27.02.2017
16:25:59
что это может значить?

Му
27.02.2017
16:26:11
покажи
бля

Vasily
27.02.2017
16:27:33
Кодировку надо явно в content-type указать,или ascii использовать

Ramil
27.02.2017
16:28:24

Му
27.02.2017
16:28:43
вот именно можно подробнее
покажи полностью запрос\ответ фидлера
твой и хрома

Google

Му
27.02.2017
16:29:07
ёпта
найди 10 отличий и подгони под хром
если отличий не видно, используюй беёндкомпер или подобное

Ramil
27.02.2017
16:30:28
ща со своей проги сниму

Му
27.02.2017
16:31:06
нажми сверху raw


Ramil
27.02.2017
16:31:39
POST http://my.drom.ru/sign?sign=the-tester%40mail.ru&password=73z3fuza HTTP/1.1
Host: my.drom.ru
Connection: keep-alive
Content-Length: 0
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Postman-Token: 421d8d44-6816-45dc-ce0d-b7ec453cecf7
Accept: */*
DNT: 1
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ring=a24fdb3522245cceadb19247628cb3ec; logged_in=1488209408; uid=22292217%3A783b0afa6f6eb318dd510a441b0162da; login=the-tester%40mail.ru; user_condition_bzr20092=0; user_condition_ios_test=0; PHPSESSID=1e882f760c206aa30f7e531941b5d866; PHPSESSID=a24fdb3522245cceadb19247628cb3ec; boobs=923415ad84fec88750b1cbc364674439421088abb95549780a3887eaa0263480u79cee6; pony=4e7a6b344d6a67794d673d3duc7628683ca5038071a5d4409065b61c8
блин
http://pastebin.com/NjSzjtvE


Му
27.02.2017
16:33:14
у тебя параметры передаются в строке запроса, а ты в своём коде передаёшь через тело
с тебя 5 тыс.

Ramil
27.02.2017
16:33:25
POST http://my.drom.ru/sign HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: my.drom.ru
Content-Length: 77
Expect: 100-continue
Connection: Keep-Alive
farpostOnly=1&login_by_password=1&sign=the-tester%40mail.ru&password=73z3fuza

Ramil
27.02.2017
16:33:38
вот с проги. уже вижу что что то не то

Му
27.02.2017
16:34:15
ага.. а я британская королева

Vyacheslav
27.02.2017
16:34:24
блин
` вот таким символом в количестве 3 штук нужно обернуть текст
получится вот так

Ramil
27.02.2017
16:34:51
```POST http://my.drom.ru/sign HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: my.drom.ru
Content-Length: 77
Expect: 100-continue
Connection: Keep-Alive
farpostOnly=1&login_by_password=1&sign=the-tester%40mail.ru&password=73z3fuza
POST http://my.drom.ru/sign HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: my.drom.ru
Content-Length: 77
Expect: 100-continue
Connection: Keep-Alive
farpostOnly=1&login_by_password=1&sign=the-tester%40mail.ru&password=73z3fuza

Vyacheslav
27.02.2017
16:35:08
молодец

Google

Ramil
27.02.2017
16:35:32
ага.. а я британская королева
GET http://my.drom.ru/sign?sign=the-tester@mail.ru&password=73z3fuza HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: my.drom.ru
Connection: Keep-Alive

Му
27.02.2017
16:37:05
зачем ты пробуешь разные методы?
сделай так же, как делает хром

Илья
27.02.2017
16:37:40
эмм, у тебя же пост был, зачем гет-то?

Admin
ERROR: S client not available

Ramil
27.02.2017
16:37:41
а что значит в респонсе Vary: Accept-Encoding ?
для разнообразия

Му
27.02.2017
16:39:43
:) сделай ещё PUT
на всякий случай

Илья
27.02.2017
16:43:44
1. используй post
2. параметры через строку, а не через тело
3. убери Content-Type: application/x-www-form-urlencoded - его же в удачном примере нет

Ramil
27.02.2017
16:44:41

Artemko
27.02.2017
16:46:38
Если не поможет, делай гет страницы входа, собери оттуда куки и передай их с постом

Му
27.02.2017
16:46:49
возможно нужно ещё хедер Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop передавать

Artemko
27.02.2017
16:48:58

Ramil
27.02.2017
16:50:10
что интересно, моя прога порождает в фиддлере 1 запрос, а постман несколько

Илья
27.02.2017
16:53:09
Кажется, понял

Google

Илья
27.02.2017
16:54:02
Постман делает авторизацию в два этапа
1. пост pass + login
2. генерит кукисы и обращается уже с куками = авторизован

Ramil
27.02.2017
16:54:04
может быть мне надо взять куки с первого запроса и выполнить остальные с ним?
а что за Tunnel to my.drom.ru:443?

Илья
27.02.2017
16:54:57

anton
27.02.2017
16:55:05
блин, парни, вы кажется загоняетесь
там ответ в куку пишется...
значит все след. запросы эта кука тоже гуляет

Ramil
27.02.2017
16:56:09
ща затестю

anton
27.02.2017
16:56:09

Илья
27.02.2017
16:56:17
ну собственно, да

Ramil
27.02.2017
17:00:28
есть ли простой способ переввести CookieCollection в CookieContainer?

anton
27.02.2017
17:00:43
если ничего не путаю, тебе нужно создавать экземпляр CookieContainer
писать туда ключ-значение из ответа на авторизацию
затем при след. запросе передавать куку указывая её request.CookieContainer = {твоя кука контейнер}

Ramil
27.02.2017
17:01:39

anton
27.02.2017
17:01:41
создаешь куки контейнер
request.CookieContainer = new CookieContainer()
и добавляешь туда куки коллекцию
request.CookieContainer.Add(response.Cookies);
response.Cookies - твоя куки коллекция из первого запроса
обязательно только сначала для нового реквеста создай инстанс CookieContainer а то нулл референс поймаешь ;)
Эта группа больше не существует