阅读更多

2顶
0踩

开源软件

原创新闻 微软开源 C++ REST SDK

2013-02-28 16:04 by 副主编 wangguo 评论(3) 有8773人浏览
微软近日开源了C++ REST SDK,托管在自己的CodePlex平台上。

项目地址:http://casablanca.codeplex.com

C++ REST SDK包含在Casablanca项目中。Casablanca是一个C++本地库,旨在帮助开发者的C++应用程序访问云服务。如果你想编写一个响应式的C++客户端应用程序,或者是一个可扩展的服务端解决方案,可以试试Casablanca。除了C++ REST SDK外,Casablanca项目还包含Azure SDK for C++。

C++ REST SDK中包含了一些工具,可以帮助开发者快速编写现代、异步、可连接REST服务的C++应用程序,遵循C++11标准,目前支持Windows 7、Windows 8(包括Windows Store和桌面应用)和Linux。

该SDK的主要特性包括:

  • 能够通过HTTP Client创建服务器连接,并发送请求、处理响应
  • 支持构造和使用URI(Uniform Resource Identifiers,统一资源标识符)
  • 构造、解析和序列化JSON值
  • 通过Streams和Stream Buffers从底层介质异步读取/写入字节
下面的示例演示了如何上传文件到HTTP服务器:

#include <http_client.h> 
#include<filestream.h> 
#include <uri.h>

using namespace concurrency::streams;
using namespace web::http::client;
using namespace web::http;

int main()
{
  // Open stream to file.
  file_stream<unsigned char>::open_istream(L"myfile.txt").then([](basic_istream<unsigned char> fileStream)
  {
    // Make HTTP request with the file stream as the body.
    http_client client(L"http://www.myhttpserver.com"); 
    client.request(methods::PUT, L"myfile", fileStream).then([fileStream](http_response response)
    {
      fileStream.close();
      // Perform actions here to inspect the HTTP response...
      if(response.status_code() == status_codes::OK)
      {
      }
    });
  });

  return 0;
}


下面的示例演示了如何构建并遍历JSON值:

#include <json.h>

int main()
{
  // Create a JSON object.
  json::value obj;
  obj[L"key1"] = json::value::boolean(false);
  obj[L"key2"] = json::value::number(44);
  obj[L"key3"] = json::value::number(43.6);
  obj[L"key4"] = json::value::string(U("str"));

  // Loop over each element in the object.
  for(auto iter = obj.cbegin(); iter != obj.cend(); ++iter)
  {
    // Make sure to get the value as const reference otherwise you will end up copying
    // the whole JSON value recursively which can be expensive if it is a nested object.
    const json::value &str = iter->first;
    const json::value &v = iter->second;

    // Perform actions here to process each string and value in the JSON object...
    wprintf(L"String:%s", str.as_string());
    wprintf(L"Value:%s", v.to_string());
  }
  return 0;
}

详细信息:The C++ REST SDK ("Casablanca")
2
0
评论 共 3 条 请登录后发表评论
3 楼 wangguo 2013-03-01 09:25
troyconder 写道
上下两段代码一致啊,坑爹

大疏忽,已改
2 楼 troyconder 2013-03-01 09:13
上下两段代码一致啊,坑爹
1 楼 mathgl 2013-02-28 17:20
看起来已经是c++ 11了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics