Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
POST_HTTP
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 1
#1

Отправить POST запрос - C++

01.08.2015, 01:23. Просмотров 1480. Ответов 8
Метки нет (Все метки)

Помогите уже, реально задолбался, 2 дня уже ищу рабочий код который бы отправлял пост запрос но никак не могу найти. Везде какие-то либы или паки исходников которые нужно проинсталлить, но даже после инсталла вроде бы код рабочий, но при компиляции выдает кучу ошибок а-ля "ссылка на неразрешенный внешний символ и т.п."

Нашел для GET запроса - Пример POST запроса . Автор сказал что POST по аналогии. Заменил гет на пост, вроде бы идет, но большой объем не тянет (даже текстовик весом в 2 кб)

Просьба помочь в данном вопросе, у кого есть рабочий код отправки пост запроса который бы не крашился при объеме текста от 2 кб. Заранее спасибо.

Добавлено через 31 минуту
вроде бы тот код заработал (массивы подправил). теперь другая проблема - как отправить инфу с текстовика через запрос этот? отправляется только первая строчка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2015, 01:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отправить POST запрос (C++):

Как на с++(юникс) отправить http post запрос без сторонних библиотек - C++
Ответ сервера не важен, главное - послать пост-запрос. boost, libcurl и прочее использовать нельзя. Подскажите, как это проще всего...

Как отправить http get запрос? - C++
Подскажите пожалуйста, как отправить http get запрос. Простой. Суть его заключается в том, что мы отправляем запрос на сайт. А сайт...

Отправить запрос на сайт и получить ответ - C++
http://vsereshu-ru.1gb.ru/MathLogic.aspx помогите отправить на этом сайте текст например "AvBvB" для решения и получить ответ в консоли...

Post запрос - C++
1) Здравствуйте, в общем я пытаюсь написать программу для одного сайта, все получается авторизация готова, но делаю 1 функцию не могу...

POST запрос, XML в c++ - C++
POST /feeds/api/users/default/subscriptions HTTP/1.1 Host: gdata.youtube.com Content-Type: application/atom+xml Content-Length:...

Post запрос php из клиента C++ - C++
Как отправить из си, значение пост запроса php скрипту. Также, как принять post запрос от php скрипта, си. Подскажите пожалуйста

8
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.08.2015, 14:18 #2
Увеличь размер массива message до нужного.
0
POST_HTTP_2
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 2
01.08.2015, 19:41 #3
Цитата Сообщение от castaway Посмотреть сообщение
Увеличь размер массива message до нужного.
у меня и так все массивы по 9999, не помогает. отправляется только первая строка.
получаю данные таким образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
size_t count = 0;
    char S;
    ifstream f(fname);
    while (!f.eof())
    {
        f.get(S);
        count++;
    }
    f.close();
    char *S2 = new char[count];
    for (int i = 0; i < count; i++) S2[i] = NULL;
    ifstream f2(fname);
    int i = 0;
    while (!f2.eof())
    {
        f2.get(S2[i]);
        i++;
    }
    f2.close();
cout выдает нормально (весь текст), но не отправляет как надо.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.08.2015, 19:43 #4
Не вижу что у тебя там по 9999. Я говорил про этот пост.
0
POST_HTTP_2
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 2
01.08.2015, 19:47 #5
дак это не мой код, я его подредактировал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
int sendget(char getter[9999], char datter[9999])
{
    WSADATA wsa_data;
    if (WSAStartup(0x101, &wsa_data))
    {
        printf("WSAStartup error (%i)\n", WSAGetLastError());
        system("pause");
        return -1;
    }
 
    if (wsa_data.wVersion != 0x101)
    {
        printf("Bad WSA version (%i)\n", wsa_data.wVersion);
        system("pause");
        return -1;
    }
 
    SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (s == INVALID_SOCKET)
    {
        printf("socket error (%i)\n", WSAGetLastError());
        system("pause");
        return -1;
    }
 
    int use_host_name = 1;
    char host_name[256];
    strcpy_s(host_name, getter);
    char host_ip[256];
    int host_port = 80;
 
    char doc[9999] = "/login.php?message=";
    char aaa[9999];
 
 
    strcpy_s(aaa, doc);
    strcat_s(aaa, datter);
    SOCKADDR_IN sa;
    sa.sin_family = AF_INET;
    sa.sin_port = htons(host_port);
    sa.sin_addr.S_un.S_addr = use_host_name ? get_addr(host_name) : inet_addr(host_ip);
 
    printf("wait for server...\n");
 
    while (true)
    {
        int connect_res = connect(s, (SOCKADDR *)&sa, sizeof(sa));
        if (!connect_res) break;
 
        Sleep(250);
    }
 
    printf("connected\n");
 
    char message[9999];
 
    int message_size = sprintf_s
        (
        message,
        "POST [url]http://%s:%i%s[/url] HTTP/1.1\r\n"
        "Host: %s:%i\r\n"
        "Content-Type: application/x-www-form-urlencoded\r\n"
        "Connection: Close\r\n"
        "\r\n",
        (use_host_name ? host_name : host_ip),
        host_port,
        aaa,
        (use_host_name ? host_name : host_ip),
        host_port
        );
 
    if (send(s, message, message_size, 0) == SOCKET_ERROR)
    {
        printf("send error (%i)\n", WSAGetLastError());
        system("pause");
        return -1;
    }
 
    char buffer[100000];
    int buffer_size = sizeof(buffer);
    buffer_size = recv(s, buffer, buffer_size, 0);
    if (buffer_size == SOCKET_ERROR)
    {
        printf("recv error (%i)\n", WSAGetLastError());
        system("pause");
        return -1;
    }
    buffer[buffer_size] = '\0';
    printf("from_server: %s\n", buffer);
 
    closesocket(s);
 
    WSACleanup();
}
чую я что ошибка в том что отправляю я пост как гет. подскажете в чем проблема?
0
Renji
1927 / 1325 / 299
Регистрация: 05.06.2014
Сообщений: 3,828
01.08.2015, 22:03 #6
Цитата Сообщение от POST_HTTP Посмотреть сообщение
Нашел для GET запроса - Пример POST запроса . Автор сказал что POST по аналогии. Заменил гет на пост, вроде бы идет, но большой объем не тянет (даже текстовик весом в 2 кб)
Нда... Нужно было удалить гланды. Нашел пример прокалывания прыща иголкой. Заменил иголку скальпелем, но почему-то теперь очень болит шея.

Используйте curl и не выпендривайтесь. С уровнем познаний "скопировал код с форума" лезть в ручное формирование multipart/form запросов и их отправку через сокеты нельзя.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
curl_global_init(CURL_GLOBAL_ALL);//один раз на всю программу
CURL *curl = curl_easy_init();
 
curl_httppost* post = 0;
curl_httppost* last = 0;
//по строчке на каждое поле запроса
curl_formadd(&post, &last, CURLFORM_COPYNAME, "user",
              CURLFORM_COPYCONTENTS, "user name", CURLFORM_END);
 
//пихаем запрос в недра curl
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
//указываем куда его слать
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/");
//поехали!
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK)
    cout<<"ops..."<<endl;
 
curl_formfree(post);
curl_easy_cleanup(curl);
curl_global_cleanup();
1
HTTP_POST
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 6
01.08.2015, 23:09 #7
Цитата Сообщение от POST_HTTP Посмотреть сообщение
Везде какие-то либы или паки исходников которые нужно проинсталлить, но даже после инсталла вроде бы код рабочий, но при компиляции выдает кучу ошибок а-ля "ссылка на неразрешенный внешний символ и т.п."
Держи:
Отправить POST запрос

CURL работает там где есть либа zlib или прочие. нужен чистый код что работал бы без зависимостей, поэтому пытался заюзать тот код. Давайте не будем давать советов что я и так бы нашел без вас в гугле?
P.S.: извините за мульты, просто забываю сделать сохранение майла-пасса в браузере, на это раз сохранил.
0
Renji
1927 / 1325 / 299
Регистрация: 05.06.2014
Сообщений: 3,828
02.08.2015, 01:18 #8
Цитата Сообщение от HTTP_POST Посмотреть сообщение
CURL работает там где есть либа zlib или прочие. нужен чистый код что работал бы без зависимостей, поэтому пытался заюзать тот код.
Такой код будет работать не везде и не всегда. Например, в Википедии принудительно включен HTTPS, который без библиотек шифрования работать не будет. Не ставится curl, берите Qt, создавайте объект QNetworkAccessManager и пинайте у него метод post. Qt то у вас, надеюсь, ставится нормально?
Цитата Сообщение от HTTP_POST Посмотреть сообщение
Давайте не будем давать советов что я и так бы нашел без вас в гугле?
Не отвечать же "а на Гугле забанили?". Гугл, "POST запрос", четвертая ссылка содержит подробное описание того, как должен выглядеть текст запроса (раздел 3.1). Раз вы пытаетесь сформировать запрос тупой заменой GET на POST, вы эту самую четвертую ссылку не открывали. Вот ответ под ваш уровень лени и был подогнан - "не выпендривайся, возьми средства попроще".
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.08.2015, 12:23 #9
HTTP_POST, POST_HTTP_2, POST_HTTP, 5.12
Запрещено создавать несколько учетных записей (пользователей-клонов).
0
02.08.2015, 12:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2015, 12:23
Привет! Вот еще темы с ответами:

POST запрос в WinInet. Данные не добавляются в БД - C++
Осваиваю WinInet и пытаюсь отправить POST запрос на сервер. Как ни пытался, данные из str0pt всячески отказываются добавляться в БД....

Отправить POST запрос - PHP Сети
Подскажите, как лучше отправить запрос с такими параметрами $header = 'POST /new/ HTTP/1.1'.&quot;\r\n&quot;. 'Host: my.host.ru'.&quot;\r\n&quot;. ...

Не удается отправить post запрос - C#
Не могу отправить post запрос Мой код private void button1_Click(object sender, EventArgs e) { string Auth =...

Помогите отправить Post запрос - Delphi
Всем привет, расскажите пожалйста как отправить POST запросы на сервер, все найденные примеры не помогли именно в моем случае. ...


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

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

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