依赖:C++11、curl
使用C/C++简单实现http的get和post请求
/*
* curl_easy_setopt(curl, CURLOPT_POST, 1L); // 设置为Post
* curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); // 设置为Get
*/
#include <iostream>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <cstring>
#include <stdio.h>
#include <curl/curl.h>
#include <curl/easy.h>
#include <curl/system.h>
// POST 请求函数
int CurlPostFUNC(std::string deviceMId)
{
char CurlHead_Msg[128] = "";
deviceMId.copy(CurlHead_Msg, 128, 0);
CURL *curl = NULL;
CURLcode res;
curl = curl_easy_init();
if (curl == NULL)
{
return CURLE_FAILED_INIT;
}
struct curl_slist *headerlist = NULL;
// 设置表头,表头内容可能不同
headerlist = curl_slist_append(headerlist, "Content-Type:application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
// 设置URL
curl_easy_setopt(curl, CURLOPT_URL, CurlHead_Msg);
// 设置需要请求的参数,比如"{Param1=Content1&Param2=Content2...}"
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "Param1=Param1Content&Param2=Param2Content");
// curl_easy_setopt(curl, CURLOPT_POSTFIELDS, /* char 类型的字符数组 */);
curl_easy_setopt(curl, CURLOPT_POST, 1L); // 设置为Post
// curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); // 设置为Get
// 发送
res = curl_easy_perform(curl);
{
// 获取详细错误信息
fprintf(stderr, "\033[31m curl_easy_perform() failed: %s\r\n \033[0m", curl_easy_strerror(res));
printf("\n");
}
// 清空
curl_easy_cleanup(curl);
// 释放表头
curl_slist_free_all(headerlist);
return 0;
}
int main(int argc, char const *argv[])
{
std::string deviceMId = "www.baidu.com"; //请求地址 URL
std::cout << "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -- 0" << std::endl;
CurlPostFUNC(deviceMId);
std::cout << "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -- 1" << std::endl;
return 0;
}