21xrx.com
2025-03-31 18:44:20 Monday
文章检索 我的文章 写文章
如何用C++发送HTTP请求
2023-07-05 13:20:47 深夜i     20     0
C++ HTTP 请求 发送 编程

在现代网络应用程序中,HTTP请求是非常常见的。无论您在使用哪种编程语言,通过各种方式向Web服务器发送HTTP请求同样重要。C++是一种广泛使用的编程语言,可以对网络进行编程。在本文中,我们将了解如何使用C++发送HTTP请求。

发送HTTP请求的第一步是创建一个套接字(socket)连接。您可以使用C++的“winsock2.h”标头文件创建套接字连接。以下是创建套接字的示例代码:

#include <iostream>
#include <winsock2.h>
using namespace std;
#pragma comment(lib, "Ws2_32.lib")
int main()
{
  WSADATA wsaData;
  SOCKET Socket;
  SOCKADDR_IN SockAddr;
  int lineCounter = 0;
  int nDataLength;
  char buffer[10000];
  string website_HTML;
  if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
  
    return 1;
  
  Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  struct hostent* host;
  host = gethostbyname("www.example.com");
  SockAddr.sin_port = htons(80);
  SockAddr.sin_family = AF_INET;
  SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
  if (connect(Socket, (SOCKADDR*)(&SockAddr), sizeof(SockAddr)) != 0)
  
    return 1;
  
  send(Socket, "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n"), 0);
  while ((nDataLength = recv(Socket,buffer,10000,0)) > 0)
  {
    int i = 0;
    while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r')
    {
      website_HTML += buffer[i];
      i += 1;
    }
  }
  closesocket(Socket);
  WSACleanup();
  cout << website_HTML;
  return 0;
}

如上所示,这个示例程序建立了一个与"www.example.com"的HTTP连接发送了GET请求,并在控制台输出HTML响应。

要发送不同类型(如POST)的请求,请将字符串更改为该请求类型所必需的内容。例如,在POST请求中,您需要向请求中添加数据,并将请求类型字符串更改为“POST”(而不是“GET”)。

"POST /path/to/page.php HTTP/1.1\r\n"
"Host: www.example.com\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 11\r\n\r\n"
"name=John+Doe"

您还可以在请求字符串中添加其他标头,例如“User-Agent”和“Accept-Language”等标头,以告诉Web服务器更多有关您的应用程序的信息。

"GET / HTTP/1.1\r\n"
"Host: www.example.com\r\n"
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0\r\n"
"Accept-Language: en-US,en;q=0.5\r\n"
"Accept-Encoding: gzip, deflate\r\n"
"Connection: keep-alive\r\n\r\n"

相信通过上文的介绍,大家对如何使用C++发送HTTP请求有了一定的了解,您可以根据自己的需要,选用合适的方式来发送HTTP请求,并在您的应用程序中访问Web服务器。

  
  

评论区

请求出错了