Исходник SendGet

Тема в разделе "C/C++", создана пользователем CleanLegend, 9 сен 2018.

  1. CleanLegend

    Всефорумный модератор

    Регистрация:
    28 мар 2013
    Сообщения:
    304
    Симпатии:
    492
    Класс для отправки get запроса и получения ответа.

    CleanLegend/SendGet(https://github.com/CleanLegend/SendGet)
    Пример использования:

    MyGet MyGetGet;
    std::string myotvet;
    MyGetGet.Init("mysite.com");
    MyGetGet.SendGet("test.php?user=test", myotvet);
    MyGetGet.DeInit();
    
     
    social enemy, Stiopko, Rjx13 и 4 другим нравится это.
  2. УченикДимаса

    УченикДимаса Активный участник

    Регистрация:
    2 июл 2013
    Сообщения:
    48
    Симпатии:
    25
    давайте кто-то еще сделает класс на класс для гет запроса
     
  3. Rinat_Namazov

    Rinat_Namazov ( ͡° ͜ʖ ͡°)
    Друг

    Регистрация:
    9 авг 2015
    Сообщения:
    1.123
    Симпатии:
    549
    Целый класс для одного GET запроса.
    Не проще так:
    
    #include <WinInet.h>
    #pragma comment (lib, "WinInet.lib")
    
    enum RequestType
    {
        GET,
        POST
    };
    
    char *SendRequest(int type, char *site, char *file, char *message)
    {
        char *fileAndMessage;
        DWORD size;
        char szBuffer[1024];
        memset(&szBuffer, NULL, sizeof(szBuffer));
    
        HINTERNET hSession = InternetOpen("App", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
        if (hSession != NULL)
        {
            HINTERNET hConnect = InternetConnect(hSession, site, INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
            if (hConnect != NULL)
            {
                if (type == RequestType::GET)
                    sprintf(fileAndMessage, "%s?%s", file, message);
                HINTERNET hRequest = HttpOpenRequest(hConnect, (type == RequestType::POST ? "POST" : "GET"), (type == RequestType::POST ? file : fileAndMessage), NULL, NULL, 0, 0, 1);
                if (hRequest != NULL)
                { 
                    LPCSTR header;
                    header = "Accept: */*";
                    HttpAddRequestHeaders(hRequest, header, strlen(header), HTTP_ADDREQ_FLAG_ADD);
                    header = "Content-Type: application/x-www-form-urlencoded";
                    HttpAddRequestHeaders(hRequest, header, strlen(header), HTTP_ADDREQ_FLAG_ADD);
                    if (HttpSendRequest(hRequest, NULL, 0, (type == RequestType::POST ? message : NULL), (type == RequestType::POST ? strlen(message) : NULL)))
                    {
                        if (InternetReadFile(hRequest, szBuffer, sizeof(szBuffer), &size))
                            return szBuffer;
                    }
                }
                InternetCloseHandle(hRequest);
            }
            InternetCloseHandle(hConnect);
        }
        InternetCloseHandle(hSession);
        return FALSE;
    }
    
     
    ufdhbi нравится это.
  4. Лисёнок

    Лисёнок Новичок

    Регистрация:
    8 сен 2018
    Сообщения:
    4
    Симпатии:
    9
    ООП головного мозга
     
    SiTrak, DarkP1xel и Rinat_Namazov нравится это.
  5. DonHomka

    DonHomka Lealta' verso la famiglia Tunes
    Друг

    Регистрация:
    8 ноя 2017
    Сообщения:
    2.414
    Симпатии:
    1.529
    @CleanLegend буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.
     
  6. iAmerican

    Друг

    Регистрация:
    17 фев 2014
    Сообщения:
    565
    Симпатии:
    228
    Ты не понимаешь что ты хочешь сам ,по этому и не получается.
     
  7. DonHomka

    DonHomka Lealta' verso la famiglia Tunes
    Друг

    Регистрация:
    8 ноя 2017
    Сообщения:
    2.414
    Симпатии:
    1.529
    Я понимаю что хочу. И с этим мне фип помог. Не умничай не по делу.
     
  8. sqlaer.

    sqlaer. Новичок

    Регистрация:
    26 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Точно, в класс. А проще всего?
     
  9. DonHomka

    DonHomka Lealta' verso la famiglia Tunes
    Друг

    Регистрация:
    8 ноя 2017
    Сообщения:
    2.414
    Симпатии:
    1.529
    а проще юзать функи фипа, она читают весь док
     
  10. sqlaer.

    sqlaer. Новичок

    Регистрация:
    26 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Я не занимаюсь сайтами, а особенно запросами. Не для меня.
     
  11. legend2360

    legend2360 Up to June 2019
    not-set

    Регистрация:
    23 мар 2013
    Сообщения:
    2.614
    Симпатии:
    1.605
    Мне кажется ты промахнулся с 27 строчкой
    CleanLegend/SendGet(https://github.com/CleanLegend/SendGet/blob/master/myGet.cpp#L27)
     
    DonHomka нравится это.
  12. CatKnight

    CatKnight Интересующийся

    Регистрация:
    26 ноя 2015
    Сообщения:
    116
    Симпатии:
    26
    Поделиться можешь?)