• 大小: 0.65M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-04-11
  • 语言: C/C++
  • 标签: c++  Url  lib  ib  编译  

资源简介

使用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\autolink.h

     文件       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个文件信息

评论

共有 条评论