添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
static size_t cb ( void * data , size_t size , size_t nmemb , void * userp ) size_t realsize = size * nmemb ; struct memory * mem = ( struct memory * ) userp ; char * ptr = ( char * ) realloc ( mem - > response , mem - > size + realsize + 1 ) ; if ( ptr == NULL ) return 0 ; /* out of memory! */ mem - > response = ptr ; memcpy ( & ( mem - > response [ mem - > size ] ) , data , realsize ) ; mem - > size + = realsize ; mem - > response [ mem - > size ] = 0 ; return realsize ; int main ( ) CURL * curl = curl_easy_init ( ) ; if ( ! curl ) std :: clog << "curl_easy_init call failed!" << std :: endl ; return - 1 ; // set url curl_easy_setopt ( curl , CURLOPT_URL , "http://google.com/" ) ; // set callback function curl_easy_setopt ( curl , CURLOPT_WRITEFUNCTION , cb ) ; // set timeout curl_easy_setopt ( curl , CURLOPT_TIMEOUT , 10 ) ; // set compress opt [notice: Better set it, otherwise it's download slow] curl_easy_setopt ( curl , CURLOPT_ACCEPT_ENCODING , "gzip" ) ; // [br, gzip, deflate] struct memory chunk ; /* we pass our 'chunk' struct to the callback function */ curl_easy_setopt ( curl , CURLOPT_WRITEDATA , ( void * ) & chunk ) ; CURLcode res = curl_easy_perform ( curl ) ; if ( CURLE_OK != res ) std :: clog << "error:" << curl_easy_strerror ( res ) << std :: endl ; return - 1 ; std :: clog << chunk . response << std :: endl ; curl_easy_cleanup ( curl ) ; return 0 ;

cpp-httplib

链接地址: https://github.com/yhirose/cpp-httplib.git

优点:header-only && cross platform
示例代码:

#include "cpp-httplib/httplib.h"
int main()
	httplib::Client cli("es-cn-xxxx.elasticsearch.aliyuncs.com", 9200);
    cli.set_basic_auth("xxx", "xxx");
    httplib::Headers headers = {
        {"Accept-Encoding", "gzip"}
    }; // [notice: Better set it, otherwise it's download slow]
    auto res = cli.Post("url", headers, "post", "application/json");
                    文章目录libcurl链接地址:[https://curl.se/libcurl/](https://curl.se/libcurl/)cpp-httplib链接地址:[https://github.com/yhirose/cpp-httplib.git](https://github.com/yhirose/cpp-httplib.git)libcurl链接地址:https://curl.se/libcurl/优点:普遍使用示例代码:#include &lt;curl/curl.h&gt;#i
				
文章目录前言`cpp-http` 简介`cpp-http` 使用介绍http 客户端搭建步骤http 服务端搭建步骤`cpp-http` 示例服务端实现客户端实现参考资料 最近在做的一个项目需要使用到 HTTP 协议,在网上查了很久,也结合了之前学长做的项目,发现 cpp-http 使用挺多的,所以就边学边做笔记,顺便分享出来(我觉得知识之所以叫知识,就是因为它能被记录并能被传播,为人所知,为人所识)。 我准备把这个学习记录做成一个系列文章,这个系列里面,我会介绍从 HTTP 协议诞生到目前的
C++ 实现 HTTP 请求可以使用一些第三方网络,例如 libcurl、Boost.Asio 和 Poco 等等。下面以 libcurl 为例,介绍如何使用 C++ 实现 HTTP 请求: ```cpp #include <iostream> #include <curl/curl.h> int main() { CURL* curl; CURLcode res; // 初始化 libcurl curl = curl_easy_init(); if (curl) { // 设置请求 URL curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com"); // 发送请求 res = curl_easy_perform(curl); if (res != CURLE_OK) { std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; // 清理 libcurl curl_easy_cleanup(curl); return 0; 在上面的代码中,我们首先使用 `curl_easy_init` 函数初始化 libcurl,然后使用 `curl_easy_setopt` 函数设置请求 URL。接着,我们调用 `curl_easy_perform` 函数发送请求,并检查请求是否成功。最后,我们使用 `curl_easy_cleanup` 函数清理 libcurl。 需要注意的是,libcurl 可以同时处理多个请求,并且支持多种协议(例如 HTTPHTTPS、FTP 等等)。因此,如果您需要实现更复杂的网络操作,可以参考 libcurl 的官方文档:https://curl.haxx.se/libcurl/。 除了 libcurl 之外,Boost.Asio 和 Poco 也是比较常用C++ 网络,它们提供了更加灵活和高级的网络操作方式,例如异步 IO、HTTPS 支持、WebSocket 支持等等。如果您需要实现更为复杂的网络操作,可以考虑使用这些