C++中发送HTTP请求需借助第三方库,常用的是libcurl。首先安装libcurl,Linux可通过包管理器如sudo apt-get install libcurl4-openssl-dev,Windows可用vcpkg或手动编译。在代码中包含#include <curl/curl.h>,初始化CURL句柄,设置URL、回调函数和数据写入方式。通过WriteCallback函数接收响应数据并存入字符串。GET请求示例如:设置CURLOPT_URL为目标地址,CURLOPT_WRITEFUNCTION为回调函数,执行curl_easy_perform()并检查返回值,成功则输出响应内容,失败则输出错误信息,最后调用curl_easy_cleanup()释放资源。发送POST请求时使用CURLOPT_POSTFIELDS设置表单数据,默认以application/x-www-form-urlencoded格式发送;若发送JSON,需添加Content-Type头:创建curl_slist并添加"Content-Type: application/json",通过CURLOPT_HTTPHEADER设置头部信息,并传入JSON字符串作为POST数据。生产环境中应设置超时机制,如CURLOPT_TIMEOUT设为10秒,CURLOPT_CONNECTTIMEOUT设为5秒,防止阻塞。还可通过curl_easy_getinfo()获取状态码、响应时间等信息用于调试。除libcurl外,可选其他库:Boost.Beast基于Boost.Asio,支持异步IO,适合高性能场景但学习成本高;cpp-httplib是轻量级头文件库,仅需

在C++中发送HTTP请求没有像Python或JavaScript那样的内置支持,但可以通过第三方库来实现。常用的方法是使用cURL库,它是功能强大且广泛使用的开源工具,支持多种协议,包括HTTP、HTTPS等。
libcurl 是C++中最常见的选择。它是一个C语言库,但可以在C++项目中直接使用,支持GET、POST等请求方式。
步骤如下:
sudo apt-get install libcurl4-openssl-dev;Windows可使用vcpkg或手动编译导入。#include <curl/curl.h>
以下是一个简单的GET请求示例:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
#include <string>
#include <curl/curl.h>
<p>// 回调函数:接收响应数据
size_t WriteCallback(void<em> contents, size_t size, size_t nmemb, std::string</em> output) {
size_t totalSize = size <em> nmemb;
output->append((char</em>)contents, totalSize);
return totalSize;
}</p><p>int main() {
CURL* curl;
CURLcode res;
std::string readBuffer;</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://www.php.cn/link/2649b36f54ee6080dd7e2c057585bce6/get");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if (res == CURLE_OK) {
std::cout << "Response:\n" << readBuffer << std::endl;
} else {
std::cerr << "Request failed: " << curl_easy_strerror(res) << std::endl;
}
curl_easy_cleanup(curl);
}
return 0;}
编译时需要链接curl库,例如:
g++ -o http_request main.cpp -lcurl
只需修改选项即可发送POST请求。示例如下:
curl_easy_setopt(curl, CURLOPT_URL, "https://www.php.cn/link/2649b36f54ee6080dd7e2c057585bce6/post"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=John&age=30");
这会以application/x-www-form-urlencoded格式发送数据。如需发送JSON,添加请求头:
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\":\"John\", \"age\":30}");
生产环境中应设置超时和错误检查:
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10); // 连接超时10秒 curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5); // 请求超时5秒
通过 curl_easy_getinfo() 可获取状态码、响应时间等信息。
除了libcurl,还有:
例如使用cpp-httplib的GET请求:
#include "httplib.h"
#include <iostream>
<p>int main() {
httplib::Client cli("<a href="https://www.php.cn/link/2649b36f54ee6080dd7e2c057585bce6">https://www.php.cn/link/2649b36f54ee6080dd7e2c057585bce6</a>");
auto res = cli.Get("/get");
if (res && res->status == 200) {
std::cout << res->body << std::endl;
}
return 0;
}
基本上就这些。对于大多数情况,libcurl足够稳定可靠。若追求简洁,cpp-httplib是不错的选择。根据项目需求选择合适的方式即可。
以上就是C++如何发送HTTP请求_C++ HTTP请求发送方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号