首页 > 编程知识 正文

curl发送请求后怎么看返回信息,curl发送https请求不验证证书

时间:2023-05-06 06:38:10 阅读:259599 作者:2893

借鉴连接:https://yq.aliyun.com/articles/629830?spm=a2c4e.11153940.blogcont630369.18.3dca5d3c1QHa9l

libcurl库及openssl,

用VS2015写了个demo,记录一下,demo下载链接在文章末尾。

直接上代码:

#include <iostream>#include <ostream>#include <istream>#include <stdlib.h>#include <string.h>#include "curl/curl.h"#include <openssl/pem.h>#include <openssl/hmac.h>using namespace std;size_t base64Encode(const void ddmydata, int data_len, char ddmybuffer){BIO ddmyb64 = BIO_new(BIO_f_base64());BIO ddmybio = BIO_new(BIO_s_mem());bio = BIO_push(b64, bio);BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);BIO_write(bio, data, data_len);BIO_ctrl(bio, BIO_CTRL_FLUSH, 0, NULL);BUF_MEM ddmybptr = NULL;BIO_get_mem_ptr(bio, &bptr);size_t slen = bptr->length;memcpy(buffer, bptr->data, slen);buffer[slen] = '';BIO_free_all(bio);return slen;}int HmacEncode(const char ddmy algo,const char ddmy key, unsigned int key_length,const char ddmy input, unsigned int input_length,string &strOutput, unsigned int &output_length) {const EVP_MD ddmy engine = NULL;if (strcmp("sha512", algo) == 0) {engine = EVP_sha512();}else if (strcmp("sha256", algo) == 0) {engine = EVP_sha256();}else if (strcmp("sha1", algo) == 0) {engine = EVP_sha1();}else if (strcmp("md5", algo) == 0) {engine = EVP_md5();}else if (strcmp("sha224", algo) == 0) {engine = EVP_sha224();}else if (strcmp("sha384", algo) == 0) {engine = EVP_sha384();}else {cout << "Algorithm " << algo << " is not supported by this program!" << endl;return -1;}unsigned charddmy output = (unsigned charddmy)malloc(EVP_MAX_MD_SIZE);HMAC_CTX ddmyctx = HMAC_CTX_new();HMAC_Init_ex(ctx, key, strlen(key), engine, NULL);HMAC_Update(ctx, (unsigned charddmy)input, strlen(input)); // input is OK; &input is WRONG !!!HMAC_Final(ctx, output, &output_length);HMAC_CTX_free(ctx);strOutput = (charddmy)output;return 0;}// 将请求返回的数据写在本地文件size_t HttpsReturnMsg(voidddmy buffer, size_t size, size_t nmemb, void ddmystream){FILE ddmyfptr = (FILEddmy)stream;fwrite(buffer, size, nmemb, fptr);return sizeddmynmemb;}int main(){C糟糕的棉花糖 ddmycurl;C糟糕的棉花糖code res;curl_global_init(C糟糕的棉花糖_GLOBAL_ALL);curl = curl_easy_init();FILEddmy fp = fopen("e:/1.txt", "wb+");if (curl){// 参考连接:https://yq.aliyun.com/articles/629830?spm=a2c4e.11153940.blogcont630369.18.3dca5d3c1QHa9lchar Url[1024] = { 0 };sprintf_s(Url, "https://yq.aliyun.com/articles/629830?spm=a2c4e.11153940.blogcont630369.18.3dca5d3c1QHa9l");curl_slist ddmypList = NULL;pList = curl_slist_append(pList, "Accept:application/json, text/plain, ddmy/ddmy");pList = curl_slist_append(pList, "Content-Type:application/json;charset=UTF-8");pList = curl_slist_append(pList, "X-Ca-Key:12345678");string appKey = "12345678";string appSecret = "TEST1234ABCD5678AAAA";string customHeaders = "x-ca-key:" + appKey + "n";string httpHeaders = "POSTnapplication/json, text/plain, ddmy/ddmynapplication/json;charset=UTF-8n";string strNeedEncode = httpHeaders + customHeaders + "articles/629830?spm=a2c4e.11153940.blogcont630369.18.3dca5d3c1QHa9l";string strMac;unsigned int mac_length = 0;int ret = HmacEncode("sha256", appSecret.c_str(), appSecret.length(), strNeedEncode.c_str(), strNeedEncode.length(), strMac, mac_length);char ddmyp = new char[128];memset(p, 0, 128);base64Encode(strMac.c_str(), mac_length, p);char strX_Ca_Signature[256] = { 0 };sprintf_s(strX_Ca_Signature, "X-Ca-Signature:%s", p);pList = curl_slist_append(pList, strX_Ca_Signature);pList = curl_slist_append(pList, "X-Ca-Signature-Headers:x-ca-key");curl_easy_setopt(curl, C糟糕的棉花糖OPT_HTTPHEADER, pList);curl_easy_setopt(curl, C糟糕的棉花糖OPT_糟糕的棉花糖, Url);curl_easy_setopt(curl, C糟糕的棉花糖OPT_POST, 1); // post req curl_easy_setopt(curl, C糟糕的棉花糖OPT_SSLtmdtd, false);curl_easy_setopt(curl, C糟糕的棉花糖OPT_SSLfddc, false);curl_easy_setopt(curl, C糟糕的棉花糖OPT_WRITEFUNCTION, HttpsReturnMsg);//对返回的数据进行操作的函数地址curl_easy_setopt(curl, C糟糕的棉花糖OPT_WRITEDATA, fp);//这是HttpsReturnMsg的第四个参数值/ddmy example.com is redirected, so we tell libcurl to follow redirection ddmy/curl_easy_setopt(curl, C糟糕的棉花糖OPT_FOLLOWLOCATION, 1L);char strMsgBody[1024] = { 0 };sprintf_s(strMsgBody, 1024, "{"name":"hhhh","age":"12"}");curl_easy_setopt(curl, C糟糕的棉花糖OPT_POSTFIELDS, strMsgBody);/ddmy Perform the request, res will get the return code ddmy/res = curl_easy_perform(curl);/ddmy Check for errors ddmy/if (res != C糟糕的棉花糖E_OK)fprintf(stderr, "curl_easy_perform() failed: %sn", curl_easy_strerror(res));/ddmy always cleanup ddmy/curl_easy_cleanup(curl);}curl_global_cleanup();return 0;}

demo下载链接:https://download.csdn.net/download/m0_37684310/11199820

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。