отсылка headers и данных POST раздельно
Есть задачка, отослать POST запрос на сервер, но требуется вначале послать headers заголовки, получить ответ а посоле отослать сами POST данные. Т,Е, соединение KeepAlive должно быть. Буду признателен примеру кода!
а что такое "послать headers заголовки" в вашем понимании? Вы читали про функционирование HTTP?
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
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
используй #include <wininet.h>
и функции: InternetOpen, InternetConnect, HttpOpenRequest, HttpAddRequestHeaders, HttpSendRequest, HttpQueryInfo
т.е. открывваешь интернет, создаёшь коннект, открываешь реквест добавляешь свои хидеры, отсылаешь реквест, читаешь ответ сервера(queryinfo), закрываешь первый реквест, создаёшь новый для кода xml, отсылаешь его, читаешь ответ сервера, закрываешь реквес, закрываешь коннект, закрываешь интернет. завершаешь выполнение программы.
Вот так в краце, как тебе сделать свои хотелки
А разве когда создам новый он пойдет БЕЗ хедеров ?
ну хотя бы прочти что-то о конкретном протоколе.
ну как можно данные по HTTP отправлять без заголовков?
бля, у вас хоть что-то кроме каши в черепе есть?
В приведенном логе хедеров нет, вот в чем проблема, и ХЗ как они его сделали
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
как бы это и есть хедеры или у вас другие?
вот что вы за демоны?
ну хотя бы прочти что-то о конкретном протоколе.
ну как можно данные по HTTP отправлять без заголовков?
бля, у вас хоть что-то кроме каши в черепе есть?
ну хотя бы прочти что-то о конкретном протоколе.
ну как можно данные по HTTP отправлять без заголовков?
бля, у вас хоть что-то кроме каши в черепе есть?
Вполне возможно, всё зависит от реализации сервера приложений.
Цитата: Kuzya
Вполне возможно, всё зависит от реализации сервера приложений.
С головой всё нормально?
Протокол подразумевает эти заголовки.
При чём тут сервер?
Речь шла про HTTP.
Цитата: Kuzya
В какой части протокола написано что они обязательны?
http://www.lib.ru/WEBMASTER/rfc2068/section-5.html
Даже на русском языке уже перевели.
Сообщение запроса от клиента к серверу содержит в первой строке: метод, который нужно применить к ресурсу, идентификатор ресурса и используемую версию протокола.
Строка запроса (Request-Line) начинается с лексемы метода, затем следует запрашиваемый URI (Request-URI), версия протокола и CRLF. Эти элементы разделяются SP. В строке запроса (Request-Line) не допустимы CR и LF, исключение составляет конечная последовательность CRLF.
Строка запроса (Request-Line) начинается с лексемы метода, затем следует запрашиваемый URI (Request-URI), версия протокола и CRLF. Эти элементы разделяются SP. В строке запроса (Request-Line) не допустимы CR и LF, исключение составляет конечная последовательность CRLF.
Цитата: mfender
Цитата: Kuzya
В какой части протокола написано что они обязательны?
http://www.lib.ru/WEBMASTER/rfc2068/section-5.html
Даже на русском языке уже перевели.
Сообщение запроса от клиента к серверу содержит в первой строке: метод, который нужно применить к ресурсу, идентификатор ресурса и используемую версию протокола.
Строка запроса (Request-Line) начинается с лексемы метода, затем следует запрашиваемый URI (Request-URI), версия протокола и CRLF. Эти элементы разделяются SP. В строке запроса (Request-Line) не допустимы CR и LF, исключение составляет конечная последовательность CRLF.
Строка запроса (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
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
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.
Цитата: mfender
колбасит вас что ли?
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.
Эт у вас стек переполнен. Дайте себе глюкозы, побалуйте мозг.
Цитата: Kuzya
Цитата: mfender
колбасит вас что ли?
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.
уже спецификацию показал.
ну как ещё можно обойти протокол?
придумаете - напишите. дам премию.
Эт у вас стек переполнен. Дайте себе глюкозы, побалуйте мозг.
При чём тут стек?
Делаем так
Код:
<?php var_dump(getallheaders());?>
Потом крутим-вертим заголовками доусёру.
Типа этово
Код:
<?php
$headers = getallheaders();
echo $headers['User-Agent'];
?>
$headers = getallheaders();
echo $headers['User-Agent'];
?>
Код:
$_SERVER['HTTP_USER_AGENT'];
Код:
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.
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.
Date:
Server:
X-Powered-By:
Vary:
~~
Это есть заголовки в чём проблема(Вам премию предложили).
Автору темы по ходу то-же по барабану с дудкой.