关闭

jsoncpp和curl的使用

186人阅读 评论(0) 收藏 举报
分类:
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#include <json/json.h>
#define MAX_BUF      65536
char wr_buf[MAX_BUF+1];
int  wr_index;
size_t write_data( void *buffer, size_t size, size_t nmemb, void *userp )
{
        int segsize = size * nmemb;
        if ( wr_index + segsize > MAX_BUF ) {
                *(int *)userp = 1;
                return 0;
        }
       
        memcpy( (void *)&wr_buf[wr_index], buffer, (size_t)segsize );
       
        wr_index += segsize;
       
        wr_buf[wr_index] = 0;
       
        return segsize;
}
int main( void )
{
        CURL *curl;
        CURLcode ret;
        int  wr_error;
        wr_error = 0;
        wr_index = 0;
       
        curl = curl_easy_init();
        if (!curl) {
                printf("couldn't init curl ");
                return 0;
        }
        //指定url
        curl_easy_setopt( curl, CURLOPT_URL, ".json" );
        //准备构造json格式消息
        Json::Value root;
		    //根节点属性
			 //子节点
    Json::Value partner;
			    //子节点属性
    partner["channel"] = Json::Value("123333");
    partner["secretKey"] = Json::Value("123");
    root["additional"] = Json::Value(partner);
	 
    root["serviceCode"] = Json::Value("so.g11111");
//   root["params"] = Json::Value("[""8554"," HAIXT" "]");
      root["params"].append("8711111");
      root["params"].append("H111");
//      root["achievement"].append("ach3");
   
 

 
    //子节点挂到根节点上
 //   root["partner"] = Json::Value(partner);

        Json::Reader reader;

        std::string strResult = root.toStyledString();
        Json::Value result;
        //测试构造字符串内容
        if (reader.parse(strResult,result))
        {
                if(!result["id"].isNull())
                {
                        //std::cout<<result["id"].asInt()<<std::endl;
                }
        }
        std::cout<<root.toStyledString().c_str()<<std::endl;
         //设置http请求json格式参数
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, root.toStyledString().c_str());
        curl_easy_setopt( curl, CURLOPT_WRITEDATA, (void *)&wr_error );
        curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_data );
       
        ret = curl_easy_perform( curl );
        printf( "ret = %d (write_error = %d) ", ret, wr_error );
       
        if ( ret == 0 ) printf( "%s ", wr_buf );
        curl_easy_cleanup( curl );
        return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2169次
    • 积分:93
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类