Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/36: Рейтинг темы: голосов - 36, средняя оценка - 4.50
galogen13
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 3
1

Отправка post-запроса С#

24.04.2012, 19:16. Просмотров 6630. Ответов 5
Метки нет (Все метки)

Доброго времени суток всем!

Пытаюсь отправить пост-запрос на сайт. По идее в ответ должно придти что-то осмысленное, но приходить какая-то ересь.

Вот информация о запросе, которые выдала мне программка Fiddler:

Код
POST [url]http://www.agent.ru/ru/booking/?info=SESSION_EXPIRED[/url] HTTP/1.1
Host: [url]www.agent.ru[/url]
Connection: keep-alive
Content-Length: 375
Cache-Control: max-age=0
Origin: [url]http://www.agent.ru[/url]
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: [url]http://www.agent.ru/ru/booking/?info=SESSION_EXPIRED[/url]
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Cookie: atid=f6fb56a7-f2b7-4d6d-b5ce-9126ab32b8e8; mp_super_properties=%7B%22all%22%3A %20%7B%22%24initial_referrer%22%3A% 20%22http%3A//www.agent.ru/%22%2C%22%24initial_referring_domai n%22%3A%20%22www.agent.ru%22%7D%2C% 22events%22%3A%20%7B%7D%2C%22funnel s%22%3A%20%7B%7D%7D; borq=H4sIAAAAAAAAAOMS5bjKL8CosJxXg9 GKnaNhw8YXb9QcGAQYJRgUGDQYDBgiGaCgg rGBkQEAvFFmzC8AAAA; agent_ru_locale=ru; __utma=1.535833189.1330147827.13348 28831.1334967052.39; __utmc=1; __utmz=1.1330147827.1.1.utmcsr=(dir ect)|utmccn=(direct)|utmcmd=(none); JSESSIONID=6F8C74371EB4D6B8C9F28063 39E37957.ag1
А вот строка, которая уходит с запросом(тоже от Fiddler):

Код
segments%5B0%5D.departurePointId=20 05&segments%5B0%5D.departurePointT y pe=CITY&segments%5B0%5D.arrivalPoin tId=1703&segments%5B0%5D.arrivalPoi ntType=CITY&segments%5B0%5D.departu reDate=21.04.2012&segments%5B0%5D.d epartureTime=ANY_TIME&adultsCount=1 &childrenCount=0&infantsWithoutS eat Count=0&infantsWithSeatCount=0&book ingClass=ECONOMIC&aircompanyId=&all ianceId=&showLowcost=true
Как видно, строка в непонятно какой кодировке. Вроде присутствуют символы "%5b" и т.д. Это вроде ASCII или UTF8, но также присутствуют символы "=", которые по идее при кодировке в UTF8 или ASCII тоже должны как-то меняться в форму "%...".

Подскажите, как организовать такую строку?
Может есть методы типа UrlEncode или что-то еще?
Или есть методы, которые переводят уже готовые экземпляры классов в строку?

Пытался отправить вручную тупо скопированную строку, но результата не дало. Тоже возвращает ересь.

Вот код запроса C#:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
System.Net.HttpWebRequest reqPOST = (HttpWebRequest)HttpWebRequest.Create(@"http://www.agent.ru/ru/booking/"); 
            reqPOST.Method = "POST"; 
            reqPOST.ContentType = "application/x-www-form-urlencoded";
            String AgentData = System.Web.HttpUtility.UrlEncode("segments[0].departurePointId=2015&segments[0].departurePointType=CITY&segments[0].arrivalPointId=1&segments[0].arrivalPointType=CITY&segments[0].departureDate=20.04.2012&adultsCount=1", Encoding.ASCII);
            
            byte[] sentData = Encoding.GetEncoding(1251).GetBytes(AgentData);
            reqPOST.ContentLength = sentData.Length;
            System.IO.Stream sendStream = reqPOST.GetRequestStream();
            sendStream.Write(sentData, 0, sentData.Length);
            sendStream.Close();
            System.Net.WebResponse result = reqPOST.GetResponse(); 
            System.IO.Stream stream1 = result.GetResponseStream();
            System.IO.StreamReader sr1 = new System.IO.StreamReader(stream1);
            string resultString = sr1.ReadToEnd();
Может в коде что неправильно делаю?
Мне кажется, где-то я с кодировками намудрил... А точнее в 3-6 строках.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 19:16
Ответы с готовыми решениями:

Отправка POST запроса
Мне необходимо сделать ПО для авторегистрации на одном из сайтов. Делаю подобное первый раз. При...

Отправка POST запроса
Прошу помощи, срочно !!! Нужно отправить POST запрос сайту, но POST запрос состоит в виде JSON....

Отправка Post запроса (игра vk)
Подскажет кто где найти метод шифрования данных в игре Вконтакте дота 2: пудж а то пост запрос при...

Отправка POST запроса и получение куки
Стоит задача залогиниться на сайте https://lk2.service.nalog.ru/lk/index.html, используя метод POST...

Отправка POST запроса и получение ответа
Есть проблема. Нужно отправить на сайт POST запрос и в зависимости от этого запроса сайт выдает...

5
WizarД
53 / 56 / 10
Регистрация: 07.02.2011
Сообщений: 556
Записей в блоге: 1
24.04.2012, 21:45 2
Попробуй:
C#
1
2
3
4
                HttpWebResponse response = (HttpWebResponse)reqPOST.GetResponse();
               
                
                string loginResponse = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("windows-1251")).ReadToEnd();
0
galogen13
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 3
25.04.2012, 01:59  [ТС] 3
Прошу прощения, что сразу не указал какая именно ересь приходит.
Смотрите. Ответ приходит, но не совсем такой, какой я жду.

Нас интересует переменная segments.

При запросе через сам сайт (ну то есть интерактивно) приходит:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="empty">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <title>Агент.ру | Время ожидания пролетит быстро!</title>
    
    <meta name="decorator" content="empty"/>
    
    <script type="text/javascript" language="javascript" src="/media/js/swfobject.js"></script>
    <script type="text/javascript" language="javascript">
        var segments =[{"departurePoint":{"id":"2130","name":"Милан (МИА, MIL)","flightPointType":"CITY","country":{"id":1864,"name":"Италия","code":"ИТ","codeIATA":"IT"},"city":{"id":2130,"name":"Милан","code":"МИА","codeIATA":"MIL"},"airport":null},"arrivalPoint":{"id":"2077","name":"Лондон (ЛОД, LON)","flightPointType":"CITY","country":{"id":22,"name":"Великобритания","code":"ГБ","codeIATA":"GB"},"city":{"id":2077,"name":"Лондон","code":"ЛОД","codeIATA":"LON"},"airport":null},"departureDate":1335312000000,"departureTime":"ANY_TIME","flights":[]}];
и дальше HTML
Ну и что приходит, когда отправляю я через код:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <meta name="description" content="Агент.ру делает возможным самостоятельное бронирование авиабилетов через интернет. У нас вы можете заказать обычные бумажные или электронные билеты на самолёт online. Авиабилеты можно получить в одной из наших точек продаж, по электронной почте или заказать доставку авиабилетов курьером." />
    <title>Агент.ру | 1. Поиск рейсов</title>
    <meta name="decorator" content="inner"/>
    
    <script type="text/javascript">
        var searchRequest ={"segments":[{"departurePoint":null,"arrivalPoint":null,"departureDate":1335312000000,"departureTime":"ANY_TIME","flights":[]},{"departurePoint":null,"arrivalPoint":null,"departureDate":1335916800000,"departureTime":"ANY_TIME","flights":[]}],"adultsCount":1,"childrenCount":0,"infantsWithoutSeatCount":0,"infantsWithSeatCount":0,"bookingClass":"ECONOMIC","aircompany":null,"estimatedTotal":0,"alliance":null,"showLowcost":true,"directFlightsOnly":false};
и дальше HTML
Вот. Как видно, поля не заполняются по какой-то причине и дальнейшая работа проходит с ошибкой.

p.s.
Спасибо, что хоть как-то пытаетесь помочь. Не первый форум, где я прошу о помощи, и нигде не то, чтобы помогли, а вообще - ответили.
0
Vitall
758 / 538 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.04.2012, 03:57 4
А вы посмотрите ответ на ваш запрос в том же фидлере и увидите это сообщение :

Внимание! В интерфейсе сайта Агент.ру активно используется JavaScript.
Если вы читаете это сообщение, значит настройками вашего браузера или плагина к нему, доступа в интернет или безопасности запрещено выполнение скриптов на страницах нашего сайта.
Пожалуйста, исправьте соответствующие настройки и обновите страницу или обратитесь к вашему


Что говорит о том что использование вебреквестов будет дорогого стоить .Так что мучатся тут думаю не стоит .А использовать веббраузер .
Один этот запрос запускает цепную реакцию на еще 70 запросов,не думаю что вы хотите их все дублировать
0
galogen13
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 3
25.04.2012, 16:23  [ТС] 5
Так, что значит "использовать веббраузер"?
0
Vitall
758 / 538 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.04.2012, 17:23 6
Класс такой http://msdn.microsoft.com/ru-ru/libr...ebbrowser.aspx
0
25.04.2012, 17:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 17:23

Разделение login:pass и отправка post запроса
Я все пытаюсь понять как нормально брать файлы login:pass из файла и потом уже работать с ними(в...

Отправка POST-запроса авторизации, и клики по сайту
Здравствуйте дорогие форумчане, мне нужно программно авторизоваться на сайте goldenbirds.biz и...

Http POST отправка файла в теле запроса
Всем привет! Пытаюсь отправить файл на сервер, но со стороны сервера мне говорят, что нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru