Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 04.03.2015, 13:24   #1
Bekass
 
Регистрация: 18.12.2011
Сообщений: 7
По умолчанию Раздельная отсылка headers и данных POST

Доброго дня.

Есть задачка, отослать POST запрос на сервер, но требуется вначале отослать headers заголовки, получить ответ а посоле отослать сами POST данные. Буду признателен примеру кода!

Последний раз редактировалось Bekass; 04.03.2015 в 13:27.
Bekass вне форума Ответить с цитированием
Старый 04.03.2015, 13:45   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,489
По умолчанию

HEAD запрос что ли хотите перед POST?
Alex11223 вне форума Ответить с цитированием
Старый 04.03.2015, 14:32   #3
Bekass
 
Регистрация: 18.12.2011
Сообщений: 7
По умолчанию

Да именно, отправить заголовок получить ответ от сервера отправить сами данные (XML)
Bekass вне форума Ответить с цитированием
Старый 04.03.2015, 14:39   #4
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,489
По умолчанию

Так не бывает в HTTP по-моему.

Просто делайте 2 запроса: сначала HEAD, потом POST.

Последний раз редактировалось Alex11223; 04.03.2015 в 14:44.
Alex11223 вне форума Ответить с цитированием
Старый 04.03.2015, 14:46   #5
AlexAsche
Новичок
Джуниор
 
Регистрация: 04.03.2015
Сообщений: 1
По умолчанию

Пример пустого head запроса, возвращает только head от сайта, изменить свои заголовки можно также через свойство Headers для WebRequest, а некоторые и через другие свойсва, например UserAgent

Код:
public static Dictionary<string, string> GetHttpResponseHeaders(string url)
{
    Dictionary<string, string> headers = new Dictionary<string, string>();
    WebRequest webRequest = HttpWebRequest.Create(url);
    webRequest.Method = "HEAD";
    using (WebResponse webResponse = webRequest.GetResponse())
    {
        foreach (string header in webResponse.Headers)
        {
            headers.Add(header, webResponse.Headers[header]);
        }
    }

    return headers;
}
но когда пост сделаете все равно заголовки тоже отправятся снова
AlexAsche вне форума Ответить с цитированием
Старый 04.03.2015, 15:05   #6
Bekass
 
Регистрация: 18.12.2011
Сообщений: 7
По умолчанию

В том то и дело, что какие-то идиотские требования, отослать заголовок, получить ответ от сервера, а следующим куском отправить сами данные
Пример ИХ лога
50 4F 53 54 20 2F 48 32 48 20 48 54 54 50 2F 31 POST /H2H HTTP/1
2E 31 0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 .1..User-Agent:
4D 6F 7A 69 6C 6C 61 2F 34 2E 30 20 28 63 6F 6D Mozilla/4.0 (com
70 61 74 69 62 6C 65 3B 20 4D 53 49 45 20 36 2E patible; MSIE 6.
30 3B 20 4D 53 20 57 65 62 20 53 65 72 76 69 63 0; MS Web Servic
65 73 20 43 6C 69 65 6E 74 20 50 72 6F 74 6F 63 es Client Protoc
6F 6C 20 32 2E 30 2E 35 30 37 32 37 2E 34 39 32 ol 2.0.50727.492
37 29 0D 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 7)..Content-Type
3A 20 74 65 78 74 2F 78 6D 6C 3B 20 63 68 61 72 : text/xml; char
73 65 74 3D 75 74 66 2D 38 0D 0A 53 4F 41 50 41 set=utf-8..SOAPA
63 74 69 6F 6E 3A 20 22 22 0D 0A 48 6F 73 74 3A ction: ""..Host:
20 31 30 2E 31 36 2E 31 30 35 2E 31 30 3A 33 30 10.16.100.10:30
30 30 32 0D 0A 43 6F 6E 74 65 6E 74 2D 4C 65 6E 002..Content-Len
67 74 68 3A 20 31 34 30 32 0D 0A 45 78 70 65 63 gth: 1402..Expec
74 3A 20 31 30 30 2D 63 6F 6E 74 69 6E 75 65 0D t: 100-continue.
0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 4B 65 65 .Connection: Kee
70 2D 41 6C 69 76 65 0D 0A 0D 0A p-Alive....

( 24279629) (MultiXID=100100) (OS PID=32172) Mon Mar 2 16:40:27 2015

(Link ID=4,LocalIp=10.16.100.10,LocalPort =30002,RemoteIp=10.1.118.146,Remote Port=49615)

Data Received Size=267 Data=
POST /H2H HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.4927)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: 10.16.100.10:30002
Content-Length: 1402
Expect: 100-continue
Connection: Keep-Alive


( 24279629) (MultiXID=100100) (OS PID=32172) Mon Mar 2 16:40:27 2015

(Link ID=4,LocalIp=10.16.100.10,LocalPort =30002,RemoteIp=10.1.118.146,Remote Port=49615)

Sending Buffer Size=25 Data=
HTTP/1.1 100 Continue


( 24279642) (MultiXID=100100) (OS PID=32172) Mon Mar 2 16:40:27 2015

(Link ID=4,LocalIp=10.16.100.10,LocalPort =30002,RemoteIp=10.1.118.146,Remote Port=49615)

Data Received
( 24279642) (MultiXID=100100) (OS PID=32172) Mon Mar 2 16:40:27 2015

(Link ID=4,LocalIp=10.16.100.10,LocalPort =30002,RemoteIp=10.1.118.146,Remote Port=49615)


3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 <?xml version="1
2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 75 74 .0" encoding="ut
66 2D 38 22 3F 3E 3C 73 6F 61 70 3A 45 6E 76 65 f-8"?><soap:Enve
6C 6F 70 65 20 78 6D 6C 6E 73 3A 73 6F 61 70 3D lope xmlns:soap=
22 68 74 74 70 3A 2F 2F 73 63 68 65 6D 61 73 2E "http://schemas.
78 6D 6C 73 6F 61 70 2E 6F 72 67 2F 73 6F 61 70 xmlsoap.org/soap
.... и тд сами данные
Bekass вне форума Ответить с цитированием
Старый 04.03.2015, 16:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

HTTP протокол в принципе не даст ответа по такой схеме.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2015, 17:22   #8
Bekass
 
Регистрация: 18.12.2011
Сообщений: 7
По умолчанию

т.е. требуется использовать сокеты ?
Bekass вне форума Ответить с цитированием
Старый 05.03.2015, 17:35   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

Цитата:
Сообщение от Bekass Посмотреть сообщение
т.е. требуется использовать сокеты ?
причем здесь сокеты?
от того что вы сами реализуете протокол, он не поменяется.

вы можете разделить на два запроса это все, но получить ответ до передачи всего запроса не выйдет.

схема HTTP протокола = Запрос-Ответ
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.03.2015, 17:37   #10
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,489
По умолчанию

Ну так видимо это не HTTP.
Alex11223 вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раздельная компиляция, классы atv C++ Builder 2 26.09.2014 10:30
раздельная трансляция denrubun Общие вопросы C/C++ 3 02.02.2013 02:50
DBGrid отсылка данных Ghennadiy Общие вопросы Delphi 1 15.02.2011 23:01
отсылка данных TriCERATOP HTML и CSS 2 29.10.2009 18:58
раздельная компилляция Dimarik Общие вопросы C/C++ 34 16.05.2009 15:19