C++使用curl发送post请求

C++使用curl发送post请求发送post请求代码如下:#include<iostream>#include<string>#include<curl\curl.h>usingnamespacestd;//get请求和post请求数据响应函数size_treq_reply(void*ptr,size_tsize,size_tnmemb,void*stream)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

发送post请求代码如下:

#include<iostream>
#include<string>
#include<curl\curl.h>
using namespace std;
//get请求和post请求数据响应函数
size_t req_reply(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;
}
//http POST请求 
CURLcode curl_post_req(const string &url, const string &postParams, string &response)
{ 
   
	// curl初始化 
	CURL *curl = curl_easy_init();
	// curl返回值 
	CURLcode res;
	if (curl)
	{ 
   
		// set params
		//设置curl的请求头
		struct curl_slist* header_list = NULL;
		header_list = curl_slist_append(header_list, "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko");
		header_list = curl_slist_append(header_list, "Content-Type:application/x-www-form-urlencoded; charset=UTF-8");
		curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list);

		//不接收响应头数据0代表不接收 1代表接收
		curl_easy_setopt(curl, CURLOPT_HEADER, 0);

		//设置请求为post请求
		curl_easy_setopt(curl, CURLOPT_POST, 1);

		//设置请求的URL地址
		curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
		//设置post请求的参数
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postParams.c_str());

		//设置ssl验证
		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);

		//CURLOPT_VERBOSE的值为1时,会显示详细的调试信息
		curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);

		curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);

		//设置数据接收和写入函数
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);
		curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&response);

		curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);

		//设置超时时间
		curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 6);
		curl_easy_setopt(curl, CURLOPT_TIMEOUT, 6);

		// 开启post请求
		res = curl_easy_perform(curl);
	}
	//释放curl 
	curl_easy_cleanup(curl);
	return res;
}
int main()
{ 
   
	string url_post0 = "http://httpbin.org/post";
	string paramsLogin0 = "key1=value1&key2=value2";
	string resPost0;
	auto res3 = curl_post_req(url_post0, paramsLogin0, resPost0);
	if (res3 == CURLE_OK)
	{ 
   
		cout << resPost0 << endl;
	}

	getchar();
	return 0;
}

运行结果为:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157755.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅析瀑布流布局及其原理视频_jquery瀑布流布局

    浅析瀑布流布局及其原理视频_jquery瀑布流布局一、什么是瀑布流很多时候我们会看到一些Vlog网站或者展示图片的网站,它们的图片明明每一张的高度大小都不同,但是却能自动地适应,排成一行一行地展示,并且下拉到底的时候,加载的图片也会自动适应,这就是瀑布流,比如下图。…

    2025年6月21日
    0
  • 前端VSCode常用插件「建议收藏」

    前端VSCode常用插件「建议收藏」前端VSCode常用插件1.Chinese(Simplified)vscode下载完毕是英文版的,先安装这个插件,改为中文版,所以是我们第一个安装的插件。2.AutoRenameTag修改开始标签,结束标签跟着自动变化,比较好用。3.OneDarkPro颜色主题4.格式化代码(vscode系统自带)但是html标签嵌套比较多,可能需要自动格式化比较好,所以我们可以利用vscode自动的功能格式化代码,暂且不用格式化插件,自动保存照样能格式化代…

    2022年7月25日
    5
  • j2me 开发网站

    j2me 开发网站http://www.j2medev.com

    2022年7月11日
    16
  • 自学编程的妙方法,直接省了几万块钱报班,不收藏就可惜了!

    自学编程的妙方法,直接省了几万块钱报班,不收藏就可惜了!答应我,别再做无用功了,好方法都在这里了!

    2022年6月17日
    23
  • bitr函数的用法_average函数怎么用

    bitr函数的用法_average函数怎么用BitBlt函数用法  2010-03-0510:25:51|  分类: VC学习|举报|字号 订阅      下载LOFTER我的照片书  |(一)BOOLBitBlt(intx,inty,intnWidth,intnHe

    2022年10月19日
    0
  • UCOSII系统移植详解「建议收藏」

    UCOSII系统移植详解「建议收藏」一,移植UCOSII操作系统的CPU前提条件1,处理器的C编译器能产生可重入型的代码,如果不行的话,那么就不能在任务之间随意的切换,因为当你切换到别的任务的时候,该任务在这个函数的数据就会被破坏。2,处理器CPU支持中断,并能产生定时中断3,用C语言就可以开关中断,进行任务切换4,处理器CPU能够支持一定数量的数据存储硬件堆栈,也就是栈5,处理器有将堆栈指针以及其他的CPU的寄存器的内容读出,并存储到堆栈或者内存中去的指令。任务切换的时候,需要将当前的CPU指针保存到刚刚执行的任务当中。

    2022年5月4日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号