Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

отсылка headers и данных POST раздельно

10K
04 марта 2015 года
Bekass
4 / / 28.04.2007
Доброго дня.

Есть задачка, отослать POST запрос на сервер, но требуется вначале послать headers заголовки, получить ответ а посоле отослать сами POST данные. Т,Е, соединение KeepAlive должно быть. Буду признателен примеру кода!
1.8K
04 марта 2015 года
Kuzya
184 / / 19.03.2008
а что такое "послать headers заголовки" в вашем понимании? Вы читали про функционирование HTTP?
10K
04 марта 2015 года
Bekass
4 / / 28.04.2007
привожу пример лога сторонней программы :

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
.... и тд сами данные

Вот это требуется повторить, разделить посылку хедера и самого сообщения, как сказали на стороне сервера

До словно
Цитата:
you must separate about POST header and XML code
first send this one

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.105.10:30002
Content-Length: 1402
Expect: 100-continueConnection: Keep-Alive
until you get
Sending Buffer Size=25 Data=HTTP/1.1 100 Continue
and then continue send the xml code
the respon just milisecond

1.8K
05 марта 2015 года
Kuzya
184 / / 19.03.2008
ну и в чём проблема то?

используй #include <wininet.h>

и функции: InternetOpen, InternetConnect, HttpOpenRequest, HttpAddRequestHeaders, HttpSendRequest, HttpQueryInfo

т.е. открывваешь интернет, создаёшь коннект, открываешь реквест добавляешь свои хидеры, отсылаешь реквест, читаешь ответ сервера(queryinfo), закрываешь первый реквест, создаёшь новый для кода xml, отсылаешь его, читаешь ответ сервера, закрываешь реквес, закрываешь коннект, закрываешь интернет. завершаешь выполнение программы.

Вот так в краце, как тебе сделать свои хотелки
10K
05 марта 2015 года
Bekass
4 / / 28.04.2007
А разве когда создам новый он пойдет БЕЗ хедеров ?
8
05 марта 2015 года
mfender
3.5K / / 15.06.2005
вот что вы за демоны?
ну хотя бы прочти что-то о конкретном протоколе.
ну как можно данные по HTTP отправлять без заголовков?
бля, у вас хоть что-то кроме каши в черепе есть?
10K
05 марта 2015 года
Bekass
4 / / 28.04.2007
В приведенном логе хедеров нет, вот в чем проблема, и ХЗ как они его сделали
1.8K
05 марта 2015 года
Kuzya
184 / / 19.03.2008
Цитата:

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.105.10:30002
Content-Length: 1402

как бы это и есть хедеры или у вас другие?

1.8K
05 марта 2015 года
Kuzya
184 / / 19.03.2008
Цитата:
вот что вы за демоны?
ну хотя бы прочти что-то о конкретном протоколе.
ну как можно данные по HTTP отправлять без заголовков?
бля, у вас хоть что-то кроме каши в черепе есть?

Вполне возможно, всё зависит от реализации сервера приложений.

8
05 марта 2015 года
mfender
3.5K / / 15.06.2005
Цитата: Kuzya

Вполне возможно, всё зависит от реализации сервера приложений.

С головой всё нормально?
Протокол подразумевает эти заголовки.
При чём тут сервер?
Речь шла про HTTP.

1.8K
06 марта 2015 года
Kuzya
184 / / 19.03.2008
Цитата: mfender
Цитата: Kuzya

Вполне возможно, всё зависит от реализации сервера приложений.

С головой всё нормально?
Протокол подразумевает эти заголовки.
При чём тут сервер?
Речь шла про HTTP.

В какой части протокола написано что они обязательны?

8
06 марта 2015 года
mfender
3.5K / / 15.06.2005
Цитата: Kuzya

В какой части протокола написано что они обязательны?

http://www.lib.ru/WEBMASTER/rfc2068/section-5.html
Даже на русском языке уже перевели.

Цитата:
Сообщение запроса от клиента к серверу содержит в первой строке: метод, который нужно применить к ресурсу, идентификатор ресурса и используемую версию протокола.
Строка запроса (Request-Line) начинается с лексемы метода, затем следует запрашиваемый URI (Request-URI), версия протокола и CRLF. Эти элементы разделяются SP. В строке запроса (Request-Line) не допустимы CR и LF, исключение составляет конечная последовательность CRLF.

1.8K
06 марта 2015 года
Kuzya
184 / / 19.03.2008
Цитата: mfender
Цитата: Kuzya

В какой части протокола написано что они обязательны?

http://www.lib.ru/WEBMASTER/rfc2068/section-5.html
Даже на русском языке уже перевели.

Цитата:
Сообщение запроса от клиента к серверу содержит в первой строке: метод, который нужно применить к ресурсу, идентификатор ресурса и используемую версию протокола.
Строка запроса (Request-Line) начинается с лексемы метода, затем следует запрашиваемый URI (Request-URI), версия протокола и CRLF. Эти элементы разделяются SP. В строке запроса (Request-Line) не допустимы CR и LF, исключение составляет конечная последовательность CRLF.

Там нет слов об обязательных заголовках, есть упоминание об заголовке "host: " - но и его можно игнорировать.


вот тебе пример:

Код:
telnet www.rambler.ru 80
Trying 81.19.70.1...
Connected to www.rambler.ru.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 200 OK
Server: nginx/1.3.7
Date: Fri, 06 Mar 2015 06:06:16 GMT
Content-Type: text/html; charset=utf-8
Connection: close
8
06 марта 2015 года
mfender
3.5K / / 15.06.2005
колбасит вас что ли?
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.
1.8K
06 марта 2015 года
Kuzya
184 / / 19.03.2008
Цитата: mfender
колбасит вас что ли?
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.

Эт у вас стек переполнен. Дайте себе глюкозы, побалуйте мозг.

327
06 марта 2015 года
UserNet2008
748 / / 03.04.2010
Цитата: Kuzya
Цитата: mfender
колбасит вас что ли?
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.

Эт у вас стек переполнен. Дайте себе глюкозы, побалуйте мозг.

При чём тут стек?
Делаем так

 
Код:
<?php var_dump(getallheaders());?>
Это есть распечатка массива заголовков.
Потом крутим-вертим заголовками доусёру.
Типа этово
 
Код:
<?php
    $headers = getallheaders();
    echo $headers['User-Agent'];
?>
or
 
Код:
$_SERVER['HTTP_USER_AGENT'];
Т.Ч mfender прав - читаем or учим POST(HTTP)
1.8K
07 марта 2015 года
Kuzya
184 / / 19.03.2008
Код:
debian{~}:telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
POST /1.php HTTP/1.0

HTTP/1.1 200 OK
Date: Sat, 07 Mar 2015 05:29:20 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze19
Vary: Accept-Encoding
Content-Length: 17
Connection: close
Content-Type: text/html

Nakher headers!!!
Connection closed by foreign host.
другое дело, что без контент-длины, сервер данные не примет
327
08 марта 2015 года
UserNet2008
748 / / 03.04.2010
Ну так
Date:
Server:
X-Powered-By:
Vary:
~~

Это есть заголовки в чём проблема(Вам премию предложили).
Автору темы по ходу то-же по барабану с дудкой.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог