Как я могу сделать запрос https с C ++ с Winsock2 - PullRequest
0 голосов
/ 26 марта 2020

Я хочу делать https запросы вместо http, от клиента к серверу методом POST. Вот шаги, которые я выполняю, чтобы выполнить простые http-запросы:

  1. открыть сокет.
  2. подключиться к серверу по имени домена.
  3. подготовить данные для запроса .
  4. отправить запрос и получить ответ от сервера.

, однако я не могу найти ничего о том, как я могу выполнить запросы https с помощью winsock в c ++. я попытался изменить заголовок http с HTTP / 1.1 на HTTS / 1.1 , но не работает. Может кто-нибудь помочь?

РЕДАКТИРОВАТЬ: через некоторое время я нашел сообщение, которое немного помогло, но теперь он даже не отправил запрос. раньше у меня был этот код:

SOCKADDR_IN sin;
    ZeroMemory(&sin, sizeof(sin));
    sin.sin_port = htons(PORT);
    sin.sin_family = AF_INET;
    memcpy(&sin.sin_addr.S_un.S_addr, host->h_addr_list[0], sizeof(sin.sin_addr.S_un.S_addr));

    //connect to server
    if (connect(sock, (const sockaddr*)&sin, sizeof(sin))) {
        return "error";
    }

и теперь я сделал это:

SOCKADDR_IN sin;
    ZeroMemory(&sin, sizeof(sin));
    sin.sin_port = htons(PORT);
    sin.sin_family = AF_INET;
    memcpy(&sin.sin_addr.S_un.S_addr, host->h_addr_list[0], sizeof(sin.sin_addr.S_un.S_addr));

    //connect to server
    if (connect(sock, (const sockaddr*)&sin, sizeof(sin))) {
        return "error";
    }

    bind(sock, (sockaddr*)&sin, sizeof(sin));
    listen(sock, 5);
    int addrLen;
    SOCKET newsock = accept(sock,(sockaddr*)&sin, &addrLen);
    char buffer[255];
    recv(newsock, buffer, 255, 0);

после этой части я пытаюсь отправить запрос:

if (!send(newsock, ssds.c_str(), strlen(ssds.c_str()), 0)) {
        return "error";
    }

до у меня был «носок» в качестве сокета и он работал, но с новым сокетом он не отправлял данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...