基于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地图界面客户数的统计"}}

原文地址:https://www.cnblogs.com/liuzhenbo/p/11041931.html

时间: 2024-11-02 15:06:22

基于libcurl的POST(http)的相关文章

C++基于libcurl 的文件下载

首先基于环境的配置这里不做详细描述,请务必保证依赖所需的库文件加载进去 通过libcurl下载文件,方法实现如下: #include <stdio.h> #include <curl/curl.h> #include "DownloadInfo.h" /************************************************************************/ /* create by: mengxiaoxin date:2

基于libcurl的GET与POST(HTTP1.1)

#include <stdio.h> #include <curl/curl.h> bool getUrl(char *filename) { CURL *curl; CURLcode res; FILE *fp; if ((fp = fopen(filename, "w")) == NULL) // 返回结果用文件存储 return false; struct curl_slist *headers = NULL; // headers = curl_slis

C++ 用libcurl库进行http通讯网络编程

http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.libcurl使用的HTTP消息头六.获取http应答头信息 七.多线程问题 八.什么时候libcurl无法正常工作 九.关于密码 十.HTTP验证 十一.代码示例 1.基本的ht

基于ibcurl的跨平台多线程断点续传下载库

之前写过一个多线程断点续传的下载库,不过那个是基于一个linux的下载程序.windows下运行还好,android下就各种问题,调试起来还麻烦.后面开发游戏的时候,一方面对下载要求不高,另一方面也精力有限,所以就没有继续研究. 趁现在有时间,我希望实现一个自己满意的下载库,满足以下需求: 1.多线程下载,根据文件大小和下载的文件数目进行调度.一般情况下是一个文件一个文件按照顺序下载,如果文件比较多的情况下可以多个文件同时下载,这个是可以设置的. 2.断点续传.下载进度记录到一个配置文件中,要求

ubuntu编译libcurl

一个基于 libcurl 的 httpclient 1.ubuntu  libcurl 源码下载地址: http://packages.ubuntu.com/precise/libs/libcurl3 2.在电脑上运行的编译方式: ①安装 指定了安装目录     /usr/local/curl ②生成Makefile:./configure --prefix=/usr/local/curl ③make && make install ④可以看到lib库,已经安装在 /usr/local/c

2.1 LibCurl编程流程(转)

转载地址:http://blog.chinaunix.net/u/17660/showart_1822514.html2 LibCurl编程2.1 LibCurl编程流程在基于LibCurl的程序里,主要采用callback function (回 调函数)的形式完成传输任务,用户在启动传输前设置好各类参数和回调函数,当满足条件时libcurl将调用用户的回调函数实现特定功能.下面是利用libcurl完成传输任务的流程:1. 调用curl_global_init()初始化libcurl2. 调用

libCURL动态分配buffer——节约内存

libCURL是一个免费的.开源的强大客户端url传输库.支持的平台.协议甚广.平台上有Windows.Linux.FreeBSD:协议上有FTP.HTTP(S).Telnet.DICT.File等.它是线程安全的,而且支持ipv6.同时,它还是线程安全的. 本文所讲述的内容,要基于Libcurl的基础.具体的了解.官方具体描述地址在:http://curl.haxx.se/libcurl/c/上面.需要多看例子,才能灵活运用. 通常libCURL的数据下载都是通过回调函数下载到buffer中的

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

一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https,ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持HTTPS证书授权,HTTP POST,HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证.在基于LibCurl的程序里,主要采用callbackfunction (回调函数)的形式完成传输任务,用户在启动传输前设置好各类参数和回调函数,当满足条件时li

C++ 用libcurl库进行http 网络通讯编程

一.LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证.想要知道更多关于libcurl的介绍,可以到官网http://curl.haxx.se/上去了解,在这里不再详述. win32版的libcurl下载地址:htt