git clone https://github.com/DaveGamble/cJSON.git

sudo cp -R cJSON/ /usr/include/

遇到的问题

好像需要编译 make  make install  然后再拷贝到 下面的路径

mkdir -p /usr/lib /usr/include/cjson

cp -a cJSON.h /usr/include/cjson

cp -a libcjson.so libcjson.so.1 libcjson.so.1.7.0 /usr/lib

cp -a cJSON_Utils.h /usr/include/cjson

cp -a libcjson_utils.so libcjson_utils.so.1 libcjson_utils.so.1.7.0 /usr/lib

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <curl/curl.h>

#include <cJSON/cJSON.h>

//#define POSTURL    "http://www.xiami.com/member/login"

#define POSTURL    "http://192.168.169.1:10099/reg"

#define POSTFIELDS "username=dsb12&password=1"

#define FILENAME   "curlposttest.log"

//解决办法 动态数组 控制buf的大小

typedef struct UserData

{

char* buf;

int len;// alloc

int used; // used length realloc:

}UserData;

struct curl_slist* headers = NULL;

UserData d;

size_t write_data(void* buffer,size_t size,size_t nmemb,void *stream)

{

memcpy(d.buf+d.len, buffer, size*nmemb);

//strcpy(d.buf+d.len, buffer, size*nmemb);

d.len += size*nmemb;

FILE *fptr = (FILE*)stream;

fwrite(buffer,size,nmemb,fptr);

return size*nmemb;

}

int main(int argc,char *argv[])

{

CURL *curl;

CURLcode res;

FILE* fptr;

struct curl_slist *http_header = NULL;

if ((fptr = fopen(FILENAME,"w")) == NULL)

{

fprintf(stderr,"fopen file error:%s\n",FILENAME);

return -1;

}

char username[1024];

fgets(username, sizeof(username), stdin);

username[strlen(username)-1]=0;

char password[1024];

fgets(password, sizeof(password), stdin);

password[strlen(password)-1] = 0;

/*

{

username: username,

password: password

}

{}

*/

cJSON* json = cJSON_CreateObject();

cJSON_AddItemToObject(json, "username", cJSON_CreateString(username));

cJSON_AddItemToObject(json, "password", cJSON_CreateString(password));

char* json_buf = cJSON_Print(json);

printf("%s\n", json_buf);

d.buf=(char*)malloc(8192);

curl = curl_easy_init();

if (!curl)

{

fprintf(stderr,"curl init failed\n");

return -1;

}

curl_easy_setopt(curl,CURLOPT_URL,POSTURL); //url地址

// curl_easy_setopt(curl,CURLOPT_POSTFIELDS,POSTFIELDS); //post参数

curl_easy_setopt(curl,CURLOPT_POSTFIELDS,json_buf); //post参数 不需要统>计长度 因为json是字符串

curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data); //对返回的数据进行操作的函数地址

curl_easy_setopt(curl,CURLOPT_WRITEDATA,fptr); //这是write_data的第四个参数值

curl_easy_setopt(curl,CURLOPT_POST,1); //设置问非0表示本次操作为post

curl_easy_setopt(curl,CURLOPT_VERBOSE,1); //打印调试信息

headers=curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");

curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

// curl_easy_setopt(curl,CURLOPT_HEADER,1); //将响应头信息和相应体一起传给write_data

curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1); //设置为非0,响应头信息location

//curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"/Users/zhu/CProjects/curlposttest.cookie");

res = curl_easy_perform(curl);

printf("============");

printf("%d\n",res);

printf("============");

if (res != CURLE_OK)

{

switch(res)

{

case CURLE_UNSUPPORTED_PROTOCOL:

fprintf(stderr,"不支持的协议,由URL的头部指定\n");

case CURLE_COULDNT_CONNECT:

fprintf(stderr,"不能连接到remote主机或者代理\n");

case CURLE_HTTP_RETURNED_ERROR:

fprintf(stderr,"http返回错误\n");

case CURLE_READ_ERROR:

fprintf(stderr,"读本地文件错误\n");

default:

fprintf(stderr,"返回值:%d\n",res);

}

return -1;

}

curl_slist_free_all(headers); /* free the list again */

curl_easy_cleanup(curl);

printf("%s\n",d.buf);

}

cjson 使用时遇到的问题找不到库相关推荐

  1. linux笔记:安装程序后,使用时显示找不到命令(command not found)

    在linux中,用各种工具下载安装程序后,使用时显示找不到命令(command not found)解决方法 其实这个问题与在windows安装程序后,在命令行下使用不了是一个原因:没有配置环境变量 ...

  2. 场效应管的判别、检测及使用时的注意事项!

    一.用指针式万用表对场效应管进行判别 1)用测电阻法判别结型场效应管的电极 根据场效应管的PN结正.反向电阻值不一样的现象,可以判别出结型场效应管的三个电极.具体方法:将万用表拨在R×1k档上,任选两 ...

  3. PowerDesigner15使用时的十五个问题

    2019独角兽企业重金招聘Python工程师标准>>> 转载:http://www.cnblogs.com/netsql/archive/2010/05/28/1746586.htm ...

  4. vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个

    vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个 原因: Cont是容器的类型,容器中定义了一个此容器所用的游标(迭代器)的类型,叫iterator,于 ...

  5. 关于mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止问题

    背景:由于某些原因,服务器需要重启一下,结果重启完就出现这个mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止问题,一想到平时偷懒没有做数据库自动备份,当时 ...

  6. window设置minio自启动时候*报错某些服务未由其他服务使用时将自动停止

    某些服务未由其他服务使用时将自动停止.. 感觉这个问题肯定很多人碰到过,因为你可能不是启动minio是别的一些服务设置自启动在服务中启动 右键点击启动时候报错如下...首先看这个错误就很蒙圈..不知道 ...

  7. pd15不能连接oracle11g,PowerDesigner15 使用时的十五个问题附解决方法

    15个问题列表: 一般常用的有CDM,PDM,UML建模,CDM可以转为PDM. 支持正向[生成数据库]和逆向工程[从数据库中生成],并直接关联到到数据库中,PDM可以直接和数据库进行关联,并将数据库 ...

  8. Xcode 9使用时那些坑

    我目前使用Xcode9发现一些奇怪的坑,坑的不要不要的..... 1.本地图片怎么也不显示(新拖入的图片),如果之前的用xcode8开发的项目拖入的图片再用xcode9打开没有影响,但是在Xcode9 ...

  9. 解决rimraf使用时提示unexpected token “.”

    解决rimraf使用时提示unexpected token "." 前言 最近运行一个Cordova项目时,npm install后打包,命令栏提示了下面这个问题: 很奇怪啊,就我 ...

最新文章

  1. asp.net mvc 学习
  2. 如何实现微服务架构中的服务发现
  3. video标签 添加视频
  4. 第11课:优化神经网络——梯度优化
  5. Qt Quick的国际化和本地化
  6. python 求最大值实例_Python 求数组局部最大值的实例
  7. 判断应用程序是否是当前激活程序(获得焦点的程序)
  8. 把C#对象转换为json字符串
  9. Introduction to Computer Networking学习笔记(二十六):HTTP、SPDY
  10. GNS3各种IOS下载
  11. Java IO流(精简版)
  12. Windows中通过命令行新建文件夹、新建文件
  13. 台式计算机图形设置,如何打开计算机图形设置以提高游戏质量?
  14. java 读取文本_Java如何读取txt文件的内容?
  15. 计算机替换字体怎么操作,电脑替换文字怎么操作
  16. 深度揭秘:伪基站短信诈骗产业传奇始末!
  17. 【 C++ 技术】 C++ 高性能服务器网络框架设计细节
  18. 不要问程序员什么是“对象”,也不要给他介绍“对象”
  19. 信息系统安全等级保护基本要求——技术要求
  20. 几个功能非常强大的学术翻译网站

热门文章

  1. CVPR2022车道线检测Efficient Lane Detection via Curve Modeling
  2. 吴恩达机器学习课后作业深度解析(附答案)(ex2)
  3. 配置python虚拟环境心得
  4. [Postman使用]请求与响应
  5. undefined reference to symbol' pthread_create@@GLIBC_2.2.5'
  6. 限量放送,2018全球智能驾驶峰会「免费拿票攻略」接住了!
  7. java多级菜单列表怎么做_JAVA构造多级菜单
  8. pythonnamedtuple定义类型_python - namedtuple和可选关键字参数的默认值
  9. 超实用的微信图片转换工具
  10. python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式