21xrx.com
2024-12-27 20:37:12 Friday
登录
文章检索 我的文章 写文章
如何用C++发送HTTP请求
2023-07-05 13:20:47 深夜i     --     --
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服务器。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复