/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/cpp/cpp-506-1005-007/main.cpp
57 строк
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
#include <iostream> #include <string> #include <sstream> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <cstring> class HttpClient { public: static std::string sendRequest(const std::string& host, int port, const std::string& method, const std::string& path, const std::string& body = "") { int sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(port); inet_pton(AF_INET, host.c_str(), &serverAddr.sin_addr); if (connect(sock, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) { close(sock); return "Ошибка подключения"; } std::ostringstream requestStream; requestStream << method << " " << path << " HTTP/1.1\r\n"; requestStream << "Host: " << host << "\r\n"; requestStream << "Content-Length: " << body.length() << "\r\n"; requestStream << "Content-Type: application/json\r\n"; requestStream << "\r\n"; requestStream << body; std::string request = requestStream.str(); send(sock, request.c_str(), request.length(), 0); char buffer[4096]; std::string response; ssize_t bytesRead; while ((bytesRead = recv(sock, buffer, sizeof(buffer) - 1, 0)) > 0) { buffer[bytesRead] = '\0'; response += buffer; } close(sock); return response; } }; int main() { std::string body = "{\"message\": \"Hello from C++\"}"; std::string response = HttpClient::sendRequest("httpbin.org", 80, "POST", "/post", body); std::cout << "Ответ:\n" << response << std::endl; return 0; }