起因是需要在C/C++实现http的POST功能,同事推荐了libcurl
安装
- 官网下载安装包
- 进入解压后的curl安装包路径
- 设置安装路径:
./configure --prefix=/usr/local/curl
- 编译:
make
- 可能需要root权限,进行运行:
sudo make install
Easy libcurl
使用easy interface需要生成handle,对于每一个线程需要单独生成一个handle。生成handle的命令为:easyhandle = curl_easy_init()
使用curl_easy_setopt()
设置属性以及选项,设置会默认沿用直到下一次修改
常用CURLOPT
- CURLOPT_URL
curl_easy_setopt(handle, CURLOPT_URL, "http://domain.com/");
- CURLOPT_WRITEFUNCTION 设置回传信息的写函数
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp); curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);
- CURLOPT_HTTPHEADER 设置POST的类型
curl_slist *plist = curl_slist_append(NULL, "Content-Type:application/json;charset=UTF-8"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, plist);
- CURLOPT_POSTFIELDS 设置POST的内容
char jsonData[1024] = {0}; std::string strJson = "{\ \"A\":\"com.cloud.activate_sample\",\n\ \"B\":\"6666\",\n\ \"C\":\"new\",\n\ \"D\":\"\"\ }"; strcpy(jsonData, strJson.c_str()); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonData);
网友评论