资源简介
使用c curlLib库进行json数据get与post的操作实例,内附编译完成的Curl库与JsonCPP库,供初学者参考。
代码片段和文件信息
// libcurlPostJson.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include
#include
//json
#include “json\json.h“
using namespace std;
//http://blog.csdn.net/wyansai/article/details/50764315
wstring AsciiToUnicode(const string& str)
{
// 预算-缓冲区中宽字节的长度
int unicodeLen = MultiByteToWideChar(CP_ACP 0 str.c_str() -1 nullptr 0);
// 给指向缓冲区的指针变量分配内存
wchar_t *pUnicode = (wchar_t*)malloc(sizeof(wchar_t)*unicodeLen);
// 开始向缓冲区转换字节
MultiByteToWideChar(CP_ACP 0 str.c_str() -1 pUnicode unicodeLen);
wstring ret_str = pUnicode;
free(pUnicode);
return ret_str;
}
string UnicodeToUtf8(const wstring& wstr)
{
// 预算-缓冲区中多字节的长度
int ansiiLen = WideCharToMultiByte(CP_UTF8 0 wstr.c_str() -1 nullptr 0 nullptr nullptr);
// 给指向缓冲区的指针变量分配内存
char *pAssii = (char*)malloc(sizeof(char)*ansiiLen);
// 开始向缓冲区转换字节
WideCharToMultiByte(CP_UTF8 0 wstr.c_str() -1 pAssii ansiiLen nullptr nullptr);
string ret_str = pAssii;
free(pAssii);
return ret_str;
}
string AsciiToUtf8(const string& str)
{
return UnicodeToUtf8(AsciiToUnicode(str));
}
size_t write_data(void *ptr size_t size size_t nmemb void *stream)
{
string data((const char*) ptr (size_t) size * nmemb);
*((stringstream*) stream) << data << endl;
return size * nmemb;
}
//POST json
int main()
{
CURL *curl;
CURLcode res;
char tmp_str[256] = { 0 };
std::stringstream out;
//HTTP报文头
struct curl_slist* headers = NULL;
char *url = “http://if.qdocument.net:705/bic/operationNote/upload“;
curl = curl_easy_init();
if(curl)
{
//构建json
Json::Value item;
item[“uid“]=Json::Value(“weidong0925@126.com“);
item[“fileName“]=Json::Value(“梅西&内马尔&苏亚雷斯.txt“);
item[“time“]=Json::Value(“2017.07.31 9:55:22“);
item[“type“]=Json::Value(“Libcurl HTTP POST Json串“);
item[“authList“]=Json::Value(“weidong0925@126.com“);
std::string jsonout = item.tostyledString();
jsonout = AsciiToUtf8(jsonout);
//设置url
curl_easy_setopt(curl CURLOPT_URL url);
//设置http发送的内容类型为JSON
//构建HTTP报文头
sprintf_s(tmp_str “Content-Length: %s“ jsonout.c_str());
headers=curl_slist_append(headers “Content-Type:application/json;charset=UTF-8“);
//headers=curl_slist_append(headers tmp_str);
curl_easy_setopt(curl CURLOPT_HTTPHEADER headers);
//curl_easy_setopt(curl CURLOPT_CUSTOMREQUEST “POST“);//自定义请求方式
curl_easy_setopt(curl CURLOPT_POST 1);//设置为非0表示本次操作为POST
// 设置要POST的JSON数据
curl_easy_setopt(curl CURLOPT_POSTFIELDS jsonout.c_str());
curl_easy_setopt(curl CURLOPT_POSTFIELDSIZE jsonout.size());
// 设置接收数据的处理函数和存放变量
curl_easy_setopt(curl CURLOPT_WRITEFUNCTION write_data);//设置回调函数
curl_easy_setopt(curl CURLOPT_WRITEDATA &out);//设置写数据
res = curl_easy_perform(curl);//执行
string str_json = out.str();
printf(“%s“str_json.c_str());
/* always cleanup */
curl_easy
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 86846 2014-03-25 11:29 libcurlPostJson\curl\curl.h
文件 22273 2014-03-26 07:49 libcurlPostJson\curl\curlbuild.h
文件 7454 2014-01-05 23:07 libcurlPostJson\curl\curlbuild.h.cmake
文件 7143 2013-09-09 00:11 libcurlPostJson\curl\curlbuild.h.in
文件 8934 2013-09-09 00:11 libcurlPostJson\curl\curlrules.h
文件 2741 2014-03-26 07:49 libcurlPostJson\curl\curlver.h
文件 3472 2013-09-09 00:11 libcurlPostJson\curl\easy.h
文件 2181 2013-09-09 00:11 libcurlPostJson\curl\Makefile.am
文件 21726 2014-03-25 11:29 libcurlPostJson\curl\Makefile.in
文件 2788 2013-09-09 00:11 libcurlPostJson\curl\mprintf.h
文件 14813 2014-01-05 23:07 libcurlPostJson\curl\multi.h
文件 1330 2013-09-09 00:11 libcurlPostJson\curl\stdcheaders.h
文件 37398 2014-01-30 23:11 libcurlPostJson\curl\typecheck-gcc.h
文件 438 2017-03-22 17:02 libcurlPostJson\json\autoli
文件 1536 2017-03-22 17:02 libcurlPostJson\json\config.h
文件 1290 2017-03-22 17:02 libcurlPostJson\json\features.h
文件 735 2017-03-22 17:02 libcurlPostJson\json\forwards.h
文件 200 2017-03-22 17:02 libcurlPostJson\json\json.h
文件 3929 2017-03-22 17:02 libcurlPostJson\json\json_batchallocator.h
文件 12669 2017-03-22 17:02 libcurlPostJson\json\json_internalarray.inl
文件 16292 2017-03-22 17:02 libcurlPostJson\json\json_internalmap.inl
文件 20941 2017-03-22 17:02 libcurlPostJson\json\json_reader.cpp
文件 39035 2017-03-22 17:02 libcurlPostJson\json\json_value.cpp
文件 7367 2017-03-22 17:02 libcurlPostJson\json\json_valueiterator.inl
文件 20309 2017-03-22 17:02 libcurlPostJson\json\json_writer.cpp
文件 6486 2017-03-22 17:02 libcurlPostJson\json\reader.h
文件 33960 2017-03-22 17:02 libcurlPostJson\json\value.h
文件 6188 2017-03-22 17:02 libcurlPostJson\json\writer.h
文件 919366 2014-05-08 10:07 libcurlPostJson\libcurl.lib
文件 1950262 2014-05-08 10:08 libcurlPostJson\libcurld.lib
............此处省略16个文件信息
- 上一篇:opengl绘制汽车.cpp
- 下一篇:门禁控制系统实验-V20170317
相关资源
- C++Builder XE7 update1 和谐文件亲测可用
- C++ Primer mobi
- c++调用C# COM 参数是结构体数组
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- 高版本Xcode 中 创建 C++ Class
- 使用 IBM Rational Systems Developer 和 Rati
- C++设计模式-好书
- C++设计模式pdf高清完整版
- 23种设计模式(C++实现版本
- C++设计模式 23种设计模式
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- C++17 The Complete Guide
- C++学习指南语法篇代码+pdf(pdf可直接
- Visual_C++_数据采集与串口通信测控应用
- c++编写的串口通讯程序
- 基于改进的fcm算法的图像分割vc++
- VC++6.0 绿色版,免安装,非常好用。
- Microsoft Visual C++ 2005 Redistributable Pack
- VC++MFC课程设计的学生成绩管理系统
- c++实现的文件上传服务器
- 一个C++实现的源代码行数统计工具
- Delphi反编译工具
- 大智慧365DLL插件设计
- 利用C++类实现PNG图像读写及显示
- Effective C++ More effective C++ 中文版 .ch
- 《Data Structures and Algorithm Analysis in C
- IEC60870-5-104 C++ 源码
- 高效FFT的C/C++代码实现包括基2的DIF和
- c++编写简略单机对战小游戏
评论
共有 条评论