基于libcurl的POST(http)

Posted liuzhenbo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于libcurl的POST(http)相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <curl/curl.h>
int main (void)

char *url="http://www.nengyouyun.cn/user/getAppversionnew2?apptype=H5C899DDC";
//char *url="http://127.0.0.1:8080";                     //Liuzhenbo
//char *url="http://www.baidu.com";                     //Liuzhenbo
//char *url="localhost";

CURL *pCurl = NULL;
CURLcode res;

struct curl_slist *headerlist = NULL;

struct curl_httppost *post = NULL;
struct curl_httppost *last = NULL;
//-----------------------------------------------------------------------//picture1
curl_formadd(&post, &last,CURLFORM_COPYNAME, "picture1", //此处表示要传的参数名
CURLFORM_FILE, "1.jpg",                               //此处表示图片文件的路径
//CURLFORM_CONTENTTYPE, "image/jpeg",
CURLFORM_END);
//------------------------------------------------------------------------//picture2
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "picture2",                      //此处表示要传的参数名
CURLFORM_FILE, "2.jpg",                              //此处表示图片文件的路径
CURLFORM_END);
//----------------------------------------------------------------------------//json
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "text1",                           //此处为别的参数
CURLFORM_COPYCONTENTS, "1.json",                   //要上传的json字符串
CURLFORM_END);
//------------------------------------------------------------------------------
pCurl = curl_easy_init();                           //初始化句柄  -liuzhenbo

if (NULL != pCurl)
 
//curl_easy_setopt(pCurl, CURLOPT_TIMEOUT, 5);
  curl_easy_setopt(pCurl, CURLOPT_URL, url);
  curl_easy_setopt(pCurl, CURLOPT_HTTPPOST, post);

  res = curl_easy_perform(pCurl);
//  printf("\nres is OK!--liuzhenbo\n");                           //-liuzhenbo
    if (res != CURLE_OK)
     
      printf("\nres is not ok!--liuzhenbo\n");                  //-liuzhenbo                              
      printf("curl_easy_perform() failed,error code is:%s\n", curl_easy_strerror(res));
     
    printf("\n"); 

  curl_easy_cleanup(pCurl);

 

服务器返回的http主体:

[email protected]:~/projects/curls/http_post$ ./liu_post
"app":"id":96,"version":"1.73","upfile":"3957","apkfile":null,"apptype":"id":"apptype-H5C899DDC","key":"dicno":"apptype","datano":"H5C899DDC","name":"昱昌","sortnum":"2","isuse":"2","descr":"修改APP地图界面客户数的统计"

 

以上是关于基于libcurl的POST(http)的主要内容,如果未能解决你的问题,请参考以下文章

c用libcurl库实现https下get/post网络通信

使用 libcurl 进行 http-post

libcurl get和post的区别

C++用libcurl通过HTTP以表单的方式Post数据到服务器

C/C++使用libcurl库发送http请求(get和post可以用于请求html信息,也可以请求xml和json等串)

使用 libcurl 执行 HTTP POST - 摘要式身份验证,使用 curl_easy_send\ curl_easy_recv