C++使用CURL库POST请求向服务器发送JSON数据

具体测试代码见:

https://pan.baidu.com/s/1d4UXxMb_TwP6C8X1ZeGOlA,提取码:yg2j

1.准备工作

      curl库和json库打导入,添加附加包含目录是include目录,添加预处理定义,添加外部依赖项

C++使用CURL库POST请求向服务器发送JSON数据_第1张图片

C++使用CURL库POST请求向服务器发送JSON数据_第2张图片

C++使用CURL库POST请求向服务器发送JSON数据_第3张图片

2.代码实现

// resful.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include 
#include 
#include 
#include 
#include 
#include 
#include "stdafx.h"
#include 
#include 
#include "json\json.h"
#include "curl\curl.h"
using namespace std;
//#pragma comment(lib, "libcurl.lib")
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);

    *((std::stringstream*) stream) << data << endl;

    return size * nmemb;
}
int _tmain(int argc, _TCHAR* argv[])
{
	CURL* curl = NULL;
	CURLcode res = CURLE_OK;
	//HTTP报文头
	struct curl_slist* headers = NULL;
	
 
	Json::Value value;
    value["dst_uid"]=Json::Value("wZdxqE9zZUlSrB");
	value["item_uid"]=Json::Value("AqRxqE9zZUlSrB");
	value["txt_lines"]=Json::Value("YWJjZGVmPXNzcyZhYmNkZWbI1cbaPTIwMTktMDQtMTM=");
    Json::Reader reader;
		
    std::string strResult = value.toStyledString();
	strResult = AsciiToUtf8(strResult);
    Json::Value result;
    //测试构造字符串内容
    /*if (reader.parse(strResult,result))
    {
            if(!result["dst_uid"].isNull())
            {
                    cout<

 

你可能感兴趣的:(C++)