資源簡介
使用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)?<
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
評論
共有 條評論