c++发送消息格式为JSON的http请求

JSON是类似于xml的一种用于信息交互的轻量级信息定义格式,可扩展性也很好。

如何用C++写的代码来发送http请求,消息格式采用JSON呢?

下面我一步一步介绍。所有步骤都经实际验证,测试平台为WIN7系统。

  1. 发送http请求需要安装curl库。vs2010下编译libcurl
  2. 需要构造和解析json格式的消息要用到jsoncpp库。vs2010下编译jsoncpp库
  3. 测试代码如下:
#include 
#include 
#include 
#include 
#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, "https://api.weibo.com/2/statuses/public_timeline.json" );
        //准备构造json格式消息
        Json::Value value;
        value["id"]=Json::Value(5345);
        Json::Reader reader;

        std::string strResult = value.toStyledString();
        Json::Value result;
        //测试构造字符串内容
        if (reader.parse(strResult,result))
        {
                if(!result["id"].isNull())
                {
                        //std::cout<


你可能感兴趣的:(C++,网络编程)