使用POST的处理方法
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
char recv_buffer[10240] = {0};
size_t recv_buffer_len;
#define MIN(x,y) ((x)<(y)?(x):(y))
static size_t fun_callback(void *buffer, size_t size, size_t block, void *f_user)
{
unsigned length;
unsigned int r_left_len = 0;
unsigned copy_len = 0;
length = size * block;
if(length == 0){
return 0;
}
r_left_len = sizeof(recv_buffer) - recv_buffer_len -1;
copy_len = MIN(length, r_left_len);
memcpy(recv_buffer + recv_buffer_len, buffer, copy_len);
recv_buffer_len += copy_len;
return length;
}
static size_t get_http_post(void)
{
CURL *curl = NULL;
CURLcode res;
char post_data[128] = {0};
const char *url = "http://xxxxxx";
memset(recv_buffer, 0, sizeof(recv_buffer));
recv_buffer_len = 0;
curl = curl_easy_init();
if(!curl){
return 0;
}
snprintf(post_data, sizeof(post_data),
"{ \
\"name\":\"binbin\", \
\"id\":1 \
}");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &fun_callback);
res = curl_easy_perform(curl);
if(res == CURLE_OK){
printf("--->%s<---\n",recv_buffer);
}
curl_easy_cleanup(curl);
return 0;
}
int main(void)
{
get_http_post();
return 0;
}