国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

curl c++ 實現(xiàn)HTTP GET和POST請求

這篇具有很好參考價值的文章主要介紹了curl c++ 實現(xiàn)HTTP GET和POST請求。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

環(huán)境配置
curl //DV2020T環(huán)境下此步驟可省略
https://curl.se/download/
筆者安裝為7.85.0版本
./configure --without-ssl
make
sudo make install
sudo rm /usr/local/lib/curl
系統(tǒng)也有curl庫,為防止沖突,刪去編譯好的curl庫。

對以json數(shù)據(jù)的解析使用開源項目:https://github.com/nlohmann/json
cd single_include 在這個文件夾里有json.hpp文件,我們只需要包含這一個頭文件即可,它不能編譯,更沒有庫。

Makefile文件

CC=g++
SDK_PATH=./include
CFLAGS=-Wno-multichar -I $(SDK_PATH) -fno-rtti
LDFLAGS=-lm -ldl -lpthread -std=c++11 -lcurl

HEADERS= \
SRCS= main.cpp\
HTTP: $(SRCS) $(HEADERS) 
	$(CC) -o  HTTP $(SRCS)  $(CFLAGS) $(LDFLAGS) -g
clean:
	rm -f HTTP

GET請求

#include "curl/curl.h"
//get請求
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <iostream>
#include <unistd.h>
#include "nlohmann/json.hpp"
using json = nlohmann::json;
using namespace  std;

/*
* ptr      表示收到服務器返回數(shù)據(jù)的首地址
* size     表示返回每個數(shù)據(jù)的大小
* nmemb    表示返回數(shù)據(jù)的個數(shù)
* userdata 用戶給該回調(diào)函數(shù)傳遞的形參   curl_easy_setopt(curl, CURLOPT_WRITEDATA, "abc"); 設置的字符串"abc"
*          這個可以用來標識傳輸命令 返回的數(shù)據(jù) 來自命令 "abc",根據(jù)這個命令來處理這個數(shù)據(jù)
*/

size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
	//在注釋的里面可以打印請求流,cookie的信息
	//cout << "----->reply" << endl;
	string *str = (string*)stream;
	//cout << *str << endl;
	(*str).append((char*)ptr, size*nmemb);
	return size * nmemb;
}


int main(void) {

	//1. 創(chuàng)建一個curl句柄
	CURL* curl = nullptr;
	CURLcode res;

	//2. 初始化一個curl句柄
	curl = curl_easy_init();

	//3. 給該句柄設定一些參數(shù) (封裝一個http請求消息)  "127.0.0.1", "/login", "id=liukang&pw=123"
	// curl_easy_setopt(curl, CURLOPT_URL, "http://39.98.187.101:1985/api/v1/clients/?count=10"); //http://www.baidu.com //get
	curl_easy_setopt(curl, CURLOPT_URL, "http://39.98.187.101:1985/api/v1/clients/y2o21qc7"); //http://www.baidu.com

    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
	//給當前句柄設置一個 處理從服務器返回數(shù)據(jù)的回調(diào)函數(shù)
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); //TODO:
	string response;
	//給回調(diào)函數(shù)傳遞一個形參
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&response);
	
	//4. 將curl句柄 向遠程服務器 提交請求 并得到一個返回值
	res = curl_easy_perform(curl);  //阻塞等待服務器返回
	if(res != CURLE_OK) {
		printf("curl easy perform error res = %d\n", res);
		return 1;
	}
	sleep(2);
	cout << "response : " << response << endl;
	//5. 處理服務器返回數(shù)據(jù)

	//6. 清空 釋放句柄內(nèi)存空間
	curl_easy_cleanup(curl);

	return 0;
}

DELETE請求文章來源地址http://www.zghlxwxcb.cn/news/detail-838987.html

#include "curl/curl.h"
//get請求
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <iostream>
#include <unistd.h>
using namespace  std;

/*
* ptr      表示收到服務器返回數(shù)據(jù)的首地址
* size     表示返回每個數(shù)據(jù)的大小
* nmemb    表示返回數(shù)據(jù)的個數(shù)
* userdata 用戶給該回調(diào)函數(shù)傳遞的形參   curl_easy_setopt(curl, CURLOPT_WRITEDATA, "abc"); 設置的字符串"abc"
*          這個可以用來標識傳輸命令 返回的數(shù)據(jù) 來自命令 "abc",根據(jù)這個命令來處理這個數(shù)據(jù)
*/

size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
	//在注釋的里面可以打印請求流,cookie的信息
	//cout << "----->reply" << endl;
	string *str = (string*)stream;
	//cout << *str << endl;
	(*str).append((char*)ptr, size*nmemb);
	return size * nmemb;
}


int main(void) {

	//1. 創(chuàng)建一個curl句柄
	CURL* curl = nullptr;
	CURLcode res;

	//2. 初始化一個curl句柄
	curl = curl_easy_init();

	//3. 給該句柄設定一些參數(shù) (封裝一個http請求消息)  "127.0.0.1", "/login", "id=liukang&pw=123"
	curl_easy_setopt(curl, CURLOPT_URL, "http://39.98.187.101:1985/api/v1/clients/"); //http://www.baidu.com //get

	//給當前句柄設置一個 處理從服務器返回數(shù)據(jù)的回調(diào)函數(shù)
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); //TODO:
	string response;
	//給回調(diào)函數(shù)傳遞一個形參
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, (string*)&response);

	//4. 將curl句柄 向遠程服務器 提交請求 并得到一個返回值
	res = curl_easy_perform(curl);  //阻塞等待服務器返回
	if(res != CURLE_OK) {
		printf("curl easy perform error res = %d\n", res);
		return 1;
	}
	sleep(2);
	cout << "response : " << response << endl;
	//5. 處理服務器返回數(shù)據(jù)
json jsonContent = json::parse(response);
string cid = jsonContent["id"];
	//6. 清空 釋放句柄內(nèi)存空間
	curl_easy_cleanup(curl);

	return 0;
}


到了這里,關于curl c++ 實現(xiàn)HTTP GET和POST請求的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【網(wǎng)絡應用層協(xié)議】【HTTP】詳解HTTP與HTTPS、POST 請求與 GET請求 、TCP與UDP、cookie和session的區(qū)別

    目錄 1. HTTP和HTTPS的區(qū)別 2. POST 請求與 GET 請求區(qū)別 3. TCP與UDP的區(qū)別 4. cookie和session的區(qū)別

    2024年04月14日
    瀏覽(38)
  • HTTP請求:GET/POST請求

    HTTP請求:GET/POST請求

    GET? 用于:地址欄請求? 通過url請求 POST 用于:表單請求 DELETE 用于刪除 PUT 用于更新 GET的請求直接嵌入在路徑中URL是完整的請求路徑,包括了 ?后面的部分,因此你可以手動解析后面的內(nèi)容作為GET請求的參數(shù) node.js是UEL模塊中的parse函數(shù)提供了這個功能。 util是node.js常用工具

    2024年02月16日
    瀏覽(20)
  • 【LibCurl】C++使用libcurl實現(xiàn)HTTP POST和GET、PUT

    libcurl是一個跨平臺的網(wǎng)絡協(xié)議庫,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 協(xié)議。libcurl同樣支持HTTPS證書授權,HTTP POST, HTTP PUT, FTP 上傳, HTTP基本表單上傳,代理,cookies,和用戶認證 libcurl的官網(wǎng): http://curl.haxx.se/ 庫下載地址: https://github.com/curl/curl/releases/tag/curl-7_71_1 初

    2024年04月17日
    瀏覽(34)
  • Powershell腳本自動化登錄網(wǎng)站的簡單實例,命令行方式實現(xiàn)Http(s)的GET、POST請求

    Powershell腳本自動化登錄網(wǎng)站的簡單實例,命令行方式實現(xiàn)Http(s)的GET、POST請求

    自動化登錄網(wǎng)站的流程比較簡單,如果不懂 Python、JavaScript、C++ 等編程語言,又沒有安裝這些編程語言環(huán)境軟件,我們還要新的點子:用Windows系統(tǒng)自帶的 Powershell 運行自編的腳本來實現(xiàn)。 PowerShell 是一種功能強大的自動化工具,除了可以使用?DOS 批處理命令之外,還可以進行

    2024年02月10日
    瀏覽(25)
  • uniapp發(fā)起post和get請求——this.$http.get 和 this.$http.post傳參

    main.js按照內(nèi)容自行修改

    2024年02月15日
    瀏覽(51)
  • HTTP中GET請求和POST請求的區(qū)別

    HTTP中GET請求和POST請求的區(qū)別

    HTTP(超文本傳輸協(xié)議)是用于在 Web 瀏覽器和 Web 服務器之間傳輸數(shù)據(jù)的協(xié)議。在 HTTP 中,GET 和 POST 是兩種常見的請求方法。一般我們在瀏覽器輸入一個網(wǎng)址訪問網(wǎng)站都是 GET 請求;在 FORM 表單中,可以通過設置 Method 指定提交方式為 GET 或者 POST 提交方式,默認為 GET 提交方

    2024年04月15日
    瀏覽(20)
  • java調(diào)用http接口(get請求和post請求)

    1.http接口的格式如下: 圖片選擇失敗,我只能把數(shù)據(jù)貼出來,如果有不懂的可以問我哈。 http://localhost:8881/department/getDepartmentList接口數(shù)據(jù)如下:(請求方式是GET) http://localhost:8881/department/getDataById?id=3接口數(shù)據(jù)如下:(請求方式是POST) 2.需要引入的包有: 3.實現(xiàn)方法如下:

    2024年02月13日
    瀏覽(25)
  • HTTP中get和post請求方式

    #get和post特點 get請求: 請求參數(shù)在請求地址后面,提交的數(shù)據(jù)量較小,安全性較差,不建議用來提交敏感信息(地址欄中會顯示,并且有可能被保存請求地址)。 功能:GET 方法用于獲取由 Request-URI 所標識的資源的信息 默認方法: GET方法是默認的HTTP請求方法 ,例如當我們

    2024年04月26日
    瀏覽(20)
  • QT進行http請求(post/get)

    在剛接觸QT時第一個任務就是進行http請求,現(xiàn)在才開始記錄,可能會有遺漏的點。 一、post請求 在.pro文件中 在.h文件中添加對應的頭文件 在.cpp中 二、get請求 .pro和.h文件和post請求一樣,在.cpp中

    2024年02月11日
    瀏覽(21)
  • C# Http 請求接口 Get / Post

    C# Http 請求接口 Get / Post

    目錄 一、概述 二、創(chuàng)建 Web API? 三、HttpRequestHelper 三、測試 結束 get 和 post 請求,最早被用來做瀏覽器與服務器之間交互HTML和表單的通訊協(xié)議,后來又被廣泛的擴充到接口格式的定義上,到目前為止,get / post 請求依然應用在各大網(wǎng)站中,比如在用戶登錄時,調(diào)用 get / post?

    2024年02月11日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包