size_t req_reply(void *ptr, size_t size, size_t nmemb, void *stream)
{
std::string *str = (std::string*)stream;
(*str).append((char*)ptr, size*nmemb);
return size * nmemb;
}
std::string response;//获取http请求响应
std::string header;//头信息
CURLcode code;
CURL *curl = curl_easy_init();//curl初始化
if (curl)
{
curl_easy_setopt(curl,CURLOPT_CUSTOMREQUEST, "POST");//http请求方式get
curl_easy_setopt(curl,CURLOPT_URL, server_addr.c_str());//设置服务器url
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, data.length());//请求数据长度
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());//请求数据,此处为json数据
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &header);//响应头
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);//回调函数
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);//设置写数据
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
code = curl_easy_perform(curl);//执行请求
}
curl_easy_cleanup(curl);//清除
返回的数据就在response中了