cjson 使用时遇到的问题找不到库
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 使用时遇到的问题找不到库相关推荐
- linux笔记:安装程序后,使用时显示找不到命令(command not found)
在linux中,用各种工具下载安装程序后,使用时显示找不到命令(command not found)解决方法 其实这个问题与在windows安装程序后,在命令行下使用不了是一个原因:没有配置环境变量 ...
- 场效应管的判别、检测及使用时的注意事项!
一.用指针式万用表对场效应管进行判别 1)用测电阻法判别结型场效应管的电极 根据场效应管的PN结正.反向电阻值不一样的现象,可以判别出结型场效应管的三个电极.具体方法:将万用表拨在R×1k档上,任选两 ...
- PowerDesigner15使用时的十五个问题
2019独角兽企业重金招聘Python工程师标准>>> 转载:http://www.cnblogs.com/netsql/archive/2010/05/28/1746586.htm ...
- vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个
vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个 原因: Cont是容器的类型,容器中定义了一个此容器所用的游标(迭代器)的类型,叫iterator,于 ...
- 关于mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止问题
背景:由于某些原因,服务器需要重启一下,结果重启完就出现这个mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止问题,一想到平时偷懒没有做数据库自动备份,当时 ...
- window设置minio自启动时候*报错某些服务未由其他服务使用时将自动停止
某些服务未由其他服务使用时将自动停止.. 感觉这个问题肯定很多人碰到过,因为你可能不是启动minio是别的一些服务设置自启动在服务中启动 右键点击启动时候报错如下...首先看这个错误就很蒙圈..不知道 ...
- pd15不能连接oracle11g,PowerDesigner15 使用时的十五个问题附解决方法
15个问题列表: 一般常用的有CDM,PDM,UML建模,CDM可以转为PDM. 支持正向[生成数据库]和逆向工程[从数据库中生成],并直接关联到到数据库中,PDM可以直接和数据库进行关联,并将数据库 ...
- Xcode 9使用时那些坑
我目前使用Xcode9发现一些奇怪的坑,坑的不要不要的..... 1.本地图片怎么也不显示(新拖入的图片),如果之前的用xcode8开发的项目拖入的图片再用xcode9打开没有影响,但是在Xcode9 ...
- 解决rimraf使用时提示unexpected token “.”
解决rimraf使用时提示unexpected token "." 前言 最近运行一个Cordova项目时,npm install后打包,命令栏提示了下面这个问题: 很奇怪啊,就我 ...
最新文章
- asp.net mvc 学习
- 如何实现微服务架构中的服务发现
- video标签 添加视频
- 第11课:优化神经网络——梯度优化
- Qt Quick的国际化和本地化
- python 求最大值实例_Python 求数组局部最大值的实例
- 判断应用程序是否是当前激活程序(获得焦点的程序)
- 把C#对象转换为json字符串
- Introduction to Computer Networking学习笔记(二十六):HTTP、SPDY
- GNS3各种IOS下载
- Java IO流(精简版)
- Windows中通过命令行新建文件夹、新建文件
- 台式计算机图形设置,如何打开计算机图形设置以提高游戏质量?
- java 读取文本_Java如何读取txt文件的内容?
- 计算机替换字体怎么操作,电脑替换文字怎么操作
- 深度揭秘:伪基站短信诈骗产业传奇始末!
- 【 C++ 技术】 C++ 高性能服务器网络框架设计细节
- 不要问程序员什么是“对象”,也不要给他介绍“对象”
- 信息系统安全等级保护基本要求——技术要求
- 几个功能非常强大的学术翻译网站
热门文章
- CVPR2022车道线检测Efficient Lane Detection via Curve Modeling
- 吴恩达机器学习课后作业深度解析(附答案)(ex2)
- 配置python虚拟环境心得
- [Postman使用]请求与响应
- undefined reference to symbol' pthread_create@@GLIBC_2.2.5'
- 限量放送,2018全球智能驾驶峰会「免费拿票攻略」接住了!
- java多级菜单列表怎么做_JAVA构造多级菜单
- pythonnamedtuple定义类型_python - namedtuple和可选关键字参数的默认值
- 超实用的微信图片转换工具
- python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式