Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48

Http post не отправляется

22.12.2014, 11:20. Показов 1643. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста в чем проблема. Пишет, что коннектится а сам запрос не отправляется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
WSADATA wsaData;    
struct sockaddr_in mySock;
SOCKET S;
WSAStartup(2,&wsaData);
mySock.sin_family=AF_INET;
mySock.sin_port=htons(80);
mySock.sin_addr.S_un.S_addr =inet_addr("127.0.0.1");
S=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
int error=connect(S,(struct sockaddr *)&mySock,sizeof(mySock));
if(error==0)cout<<"connected"<<endl;   
char buff[2024];
    strcpy(buff,"POST /logklt.php HTTP/1.1\r\n");
    strcat(buff,"Host: 127.0.0.1");
    strcat(buff,"Referer: /logklt.php\r\n");
    strcat(buff,"Cookie: income=1\r\n");
    strcat(buff,"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6\r\n");
    strcat(buff,"Content-Type: application/x-www-form-urlencoded\r\n");
     strcat(buff,"Content-Length: 75\r\n");
     strcat(buff,"\r\n");
     strcat(buff,"tt1=1?tt2=1");
     strcat(buff,"\r\n");
    error=send(S,buff,strlen(buff),0);
    if(error!=-1)cout<<"connected2"<<endl;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2014, 11:20
Ответы с готовыми решениями:

Не отправляется POST запрос
Выдаёт ошибку в HttpSendRequest 12005 Помогите найти, спасибо #include &lt;windows.h&gt; #include &lt;wininet.h&gt; #include...

Неправильно отправляется Curl post
Добрый день, помогите, пожалуйста, разобраться. На сервер приходят все null, и хедер тоже null. Последний пример взял с офф. сайта с...

Сообщение отправляется в формате протокола ТСР и уже на адресате преобразуется в HTTP?
Известно, что сообщение сервера, направляемое браузеру, передается на транспортном уровне на основе протоколов TCP/UDP. Т.е. сообщение...

24
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
22.12.2014, 11:39
Цитата Сообщение от seka-s79 Посмотреть сообщение
strcat(buff,"Host: 127.0.0.1");
забыли \r\n

Цитата Сообщение от seka-s79 Посмотреть сообщение
strcat(buff,"tt1=1?tt2=1");
разделитель между POST-переменными должен быть &, а не ?

Цитата Сообщение от seka-s79 Посмотреть сообщение
strcat(buff,"Content-Length: 75\r\n");
вы уверены, что так много байт у вас в теле запроса?
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 11:48  [ТС]
Спасибо, за ответ, но сделал как Вы написали к сожалению ничего не получается.
Может еще чего не так.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 14:33
Откуда в Content-Length 75 ?
Там должна быть длина вот этой строки, в байтах:
tt1=1&tt2=1
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 14:40  [ТС]
Поставил 11 всеровно не выходит.
Выводит, что ошибки send не выдает.
А в браузере молчок.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 14:43
А что возвращает сервер ? Какой код HTTP ?

Добавлено через 1 минуту
Кстати, самый последний strcat не нужен.
1
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 15:01  [ТС]
Я не знаю. А как узнать, что возвращает сервер?
Подскажите, пожалуйста.

Добавлено через 16 минут
Добавил этот код, а он ничего не выводит.
C++
1
2
3
4
5
error = recv(S, buff, strlen(buff), 0);
        if ( error > 0 ) 
           cout<<"sent"<<endl; 
        else
           cout<<"not sent"<<endl;
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 15:18
Запишите HTTP-запрос в файл (содержимое buff прямо перед
вызовом send) и выложите сюда. И то же самое сделайте с ответом сервера
(если он принял запрос, то должен хоть что-то отправить в ответ).
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 15:55  [ТС]
это загаловки в файле.

POST http://localhost/logklt.php HTTP/1.1

Host:localhost

Referer: /logklt.php

Cookie: income=1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6

Content-Type: application/x-www-form-urlencoded

Content-Length: 11

tt1=1&tt2=1

через пять минут записался ответ от сервера
0
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 16:25
А между Content-Length и tt1=1&tt2=1 есть двойная пустая строка ?
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 16:35  [ТС]
Нет, нету.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 16:38
А должна быть.

Добавлено через 1 минуту
Должно быть примерно следующее:
Code
1
2
3
4
5
6
7
8
9
POST http://localhost/logklt.php HTTP/1.1
Host:localhost
Referer: /logklt.php
Cookie: income=1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
 
tt1=1&tt2=1
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 16:38  [ТС]
То есть в буфер записать две пустые строки с переносами строк?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 16:47
"Двойная пустая строка" - это я неверно выразился.
Имелось в виду два идущих друг за другом переноса строки.

В HTTP между заголовками и телом должна быть одна пустая строка.
Иначе сервер никак не поймет, где кончается первое и начинается второе.
То есть:
C++
1
2
3
4
strcpy(buff, "header1: value1\r\n");
strcat(buff, "header2: value2\r\n");
strcat(buff, "header3: value3\r\n\r\n"); // <--  Обратите внимание.
strcat(buff, "This is a body");
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 16:52  [ТС]
Сделал как Вы написали.
Теперь возвращает
276

Но в браузере молчит.

Подскажите пожалуйста, что это значит 276.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 17:05
276 - это что ?
Значение, которое вернула функция recv или это содержимое буфера,
куда recv записала ответ сервера ?
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 17:11  [ТС]
Это то что recv вернула. А надо буфер записать?

Добавлено через 2 минуты
Ответ сервера в буфере

HTTP/1.1 200 OK

Date: Mon, 22 Dec 2014 14:10:02 GMT

Server: Apache/2.2.25 (Win32) PHP/5.3.8

X-Powered-By: PHP/5.3.8

Content-Length: 299

Content-Type: text/html; charset=utf-8



п»ї<html>

<FORM method="POST" action="logklt.php">

<p><b>Логин:</b><br>

<input typ
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 17:20
Цитата Сообщение от seka-s79 Посмотреть сообщение
HTTP/1.1 200 OK
Ну вот, значит сервер обработал запрос успешно.
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 48
22.12.2014, 17:25  [ТС]
А не подскажете почему POST данные не принимаются. И я заголовки смотрю они на сервере не меняются. То есть как я сделал преведущий GET запрос так он и остается должно же меняться на POST.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.12.2014, 17:28
Цитата Сообщение от seka-s79 Посмотреть сообщение
А не подскажете почему POST данные не принимаются.
Сервер вернул код 200 (успех), значит, данные были приняты.

Цитата Сообщение от seka-s79 Посмотреть сообщение
И я заголовки смотрю они на сервере не меняются. То есть как я сделал преведущий GET запрос так он и остается должно же меняться на POST.
Ничего не понятно. Объясните подробнее - какие заголовки, где меняются,
что такое "преведущий GET" и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2014, 17:28
Помогаю со студенческими работами здесь

HTTP-POST запрос.
Ниже приведенный код отправляет POST запрос. Проблема в том, что в ответ принимаются не все данные(не вся страница). Подскажите пожалуйста...

[MFC]HTTP POST запрос
Здравствуйте! Есть такой алгоритм пост запроса на сервер Код: CString strHeaders = _T(&quot;Content-Type:...

Curl http post request + кириллица
Здравствуйте, нужно написать программу для перевода текста. Использовать буду яндекс апи. С помощью curl отправляю запрос на сайт, все...

HTTP запрос методом post и передача данных
Здравствуйте уважаемые программисты! Я написал программу на с++, которая отправляет http запросы методом post и данные, например...

Помогите отладеть код на С++ отправка запроса post по http
вот код клиента на С++ #include &lt;windows.h&gt; #include &lt;windowsx.h&gt; #include &lt;commctrl.h&gt; #include &lt;string.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru