VS2015:C++使用libcurl发送POST请求

环境:

  • win10
  • VS2015
  • curl-7.61.1

步骤:

  1. 准备好libcurl.lib、libcurl.dll
  2. 搭建好项目目录,并放入curl头文件、libcurl.lib、libcurl.dll,创建好空的.cpp文件
  3. cmake编译该项目
  4. 打开.sln文件,进行编程
  5. 生成解决方案并执行

一、搭建项目目录结构

    新建文件夹test,里面目录结构如下,暂且将LIBCURL.DLL文件放置在lib目录下:
VS2015:C++使用libcurl发送POST请求_第1张图片

  • build:放置cmake编译后生成的文件
  • include:放置头文件
  • src:放置cpp源文件
  • lib:放置链接库
  • CMakeLists.txt:cmake根据此文件编译项目

编写CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8.9)

#工程名字
project(test)

#设置
set(CMAKE_BUILD_TYPE Release)

#添加头文件
include_directories(include)

#将src文件中所有的cpp文件交给GLOB子命令,生成一个文件列表,并将列表赋值给SOURCES变量,即SOURCES变量中存放着所有源文件的路径
file(GLOB SOURCES "src/*.cpp")


#第一个参数为最终编译出来的程序名字,第二个参数为编译所需要的代码文件
add_executable(test ${SOURCES})

编写完毕后使用cmake进行编译

二、编写c++源文件

    进入build文件夹下,打开test.sln,编辑main.cpp如下:

#include
#include
void main(int argc, char **argv) {
	CURL *curl;
	CURLcode res;

	/* 初始化winsock的内容 */
	curl_global_init(CURL_GLOBAL_ALL);

	/* 获得一个curl的手柄(handle)*/
	curl = curl_easy_init();
	if (curl) {
		/* 设置post请求地址,最好使用https */
		curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/sy/controller/index.php");
		/* 指定post数据 */
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=test&password=123");

		/* 执行请求,res将获得返回代码 */
		res = curl_easy_perform(curl);
		/* 检查错误 */
		if (res != CURLE_OK)
			fprintf(stderr, "curl_easy_perform() failed: %s\n",
				curl_easy_strerror(res));

		/* 清除链接 */
		curl_easy_cleanup(curl);
	}
	curl_global_cleanup();
}

接收数据文件index.php文件如下:

 "","data" => "" ];
	if(!empty($_POST)){
		$text = fopen("postdata.txt", "w");
		foreach ($_POST as $key => $value) {
			fwrite($text, "key =>".$key."\n");
			fwrite($text, "value =>".$value."\n");
		}
		$data = ["msg" => "c++post数据成功","data" => "" ];
		fclose($text);

	}
	echo json_encode($data);
?>

编写完毕之后,在VS界面开始生成解决方案:
VS2015:C++使用libcurl发送POST请求_第2张图片
项目属性 -> 链接器 -> 输入 -> 依赖项管理,添加LIBCURL.LIB的路径:
VS2015:C++使用libcurl发送POST请求_第3张图片

开始调试:
VS2015:C++使用libcurl发送POST请求_第4张图片
将LIBCURL.DLL文件放到生成的.exe文件所在目录下即可。成功运行之后会在index.php文件同一目录下生成postdata.txt文件:
在这里插入图片描述

VS2015:C++使用libcurl发送POST请求_第5张图片

你可能感兴趣的:(C++)