Qt libcurl的下載、配置及簡單測試
- 引言
- 一、libcurl下載
- 二、在Qt Creator中配置
- 三、簡單測試
引言
curl(Client URL)是一個開源的命令行工具和庫,用于傳輸數據支持多種協議(如HTTP、HTTPS、FTP、SFTP等)。其核心庫libcurl提供了跨平臺的API,允許開發者通過代碼實現網絡通信功能。
一、libcurl下載
官方下載地址:https://curl.se/download.html
-
- 找到適合自己的版本 (我的是Windows 64),下載帶有
devel
標識的。Linux找不到對應版本可下載源碼編譯.
- 找到適合自己的版本 (我的是Windows 64),下載帶有
-
- 彈出如下界面選擇第一個,下載的文件為:
curl-8.15.0_4-win64-mingw.zip
。
- 彈出如下界面選擇第一個,下載的文件為:
二、在Qt Creator中配置
-
- 新建項目,將壓縮包里的
include
和lib
文件夾拷貝到.pro
同目錄,然后在.pro
文件中增加如下語句:
- 新建項目,將壓縮包里的
LIBS += -L$$PWD/lib
LIBS += -lcurl
-
- cpp可直接引用
#include "include/curl/curl.h"
- cpp可直接引用
-
- 也可通過配置環境變量來使用 (
可選
)
- 也可通過配置環境變量來使用 (
參考鏈接:
libcurl的下載、編譯和在Qt中的配置:https://blog.csdn.net/qq_50150638/article/details/140176873
一個非常優秀的跨平臺物聯網開發常用的網絡請求庫libcurl:https://cloud.tencent.com/developer/article/1962259
三、簡單測試
運行需注意:壓縮包里bin目錄下的libcurl-x64.dll
,需拷貝到項目生成的.exe
同目錄下,或者配置環境變量。測試結果,接口返回的響應如下所示:
測試流程:
-
- 在
Apifox
這個軟件上創建測試接口,保存后會自動啟用Mock用于測試:
- 在
-
- 在cpp里增加如下代碼,
注意替換Mock地址的URL
:
- 在cpp里增加如下代碼,
#include "include/curl/curl.h"
#include <QDebug>
#include <QJsonDocument>
#include <QByteArray>
#include <QJsonObject>size_t write(char *buffer, size_t size, size_t nmemb, std::string* stream)
{size_t len = size * nmemb;stream->append(buffer, len);return len;
}int main(int argc, char *argv[])
{CURL *curl;CURLcode res;std::string data;curl = curl_easy_init();if(curl) {curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:4523/m1/6845287-6559514-default/api/cs");curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Content-Type: multipart/form-data");curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);curl_mime *mime;curl_mimepart *part;mime = curl_mime_init(curl);part = curl_mime_addpart(mime);curl_mime_name(part, "id");curl_mime_data(part, "", CURL_ZERO_TERMINATED);part = curl_mime_addpart(mime);curl_mime_name(part, "name");curl_mime_data(part, "", CURL_ZERO_TERMINATED);curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);// recv_responsecurl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write);curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);res = curl_easy_perform(curl);curl_mime_free(mime);}curl_easy_cleanup(curl);QByteArray byte = QByteArray::fromStdString(data);QJsonDocument doc = QJsonDocument::fromJson(byte);qDebug() << doc;qDebug() << doc.object().value("id").toString();
}
參考鏈接:
libcurl 文件下載demo:https://blog.51cto.com/u_16213673/13733484
Apifox 新手快速上手:https://blog.csdn.net/c8899y/article/details/140907072
Apifox Mock 功能全解析:https://apifox.com/help/articles/apifox-mock/
Apifox 和 Apipost: API工具的成本考量:https://zhuanlan.zhihu.com/p/27127854818
掌握 Postman Mock server 的實用技巧:https://zhuanlan.zhihu.com/p/696581669
使用postman搭建mock服務 :https://www.cnblogs.com/wx170119/p/12512507.html
libcurl編譯與基本使用:https://blog.csdn.net/zwcslj/article/details/140265313