广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    如何使用cpprestSDK开发Webservice客户端

    来源:网络收集  点击:  时间:2024-03-06
    【导读】:
    Webservice有两种实现方式,其一基于SOAP协议,另外一种基于REST,后一种目前来看是越来越流行。使用C#可以很便捷的开发REST客户端,那么使用C++开发REST client就没那么容易了。但这并不说明c++无法开发REST。笔者找到了微软官方发布的cpprestsdk,旨在简化REST开发,笔者经过一段时间摸索,记录此经验,希望能给需要的人带来帮助。工具/原料morevisual studio 2017方法/步骤1/8分步阅读

    cpprestsdk的源代码可以在github下载,但是从源码编译的过程太复杂,因为源码使用了boost等库,不管是下载还是编译都很麻烦。笔者并不推荐此方法,因为有更好的方法。

    2/8

    另外一种是使用vcpkg安装,笔者也尝试此种方法,发现vcpkg这个工具本身就是一个大坑,需要先下载vcpkg源码,编译为可执行程序,然后还用到powershell,版本低的,还需要升级,另外,过程中还要解决一大堆cmake工具引起的问题,笔者倒弄了半天,最后也是跟vcpkg一刀两断了。

    所以,这种方法也要果断放弃,因为还有更好的,更便捷的方法,一般人我还真不告诉他。

    3/8

    最好的方法就是使用Visual studio自带的NuGet package包管理器。

    实现是使用visual studio 新建一个c++工程(MFC/win32/控制台随意),然后,对着工程名点击右键,在弹出的菜单选择“管理NuGet程序包”,打开NuGet包管理器。

    4/8

    搜索cpprestsdk(需要联网),可以找到最新的cpprestsdk的说明,右边一个下载提示,单击“下载”。

    5/8

    visual studio 会提示要安装cpprestsdk的若干组件,点击确认,自动开始安装。

    6/8

    安装完成后,visual studio自动将cpprestsdk (编译后的lib和头文件,dll文件)下载到与工程文件所在的路径中。(经笔者验证,这些文件可以copy到其他路径,以便工程添加引用)。

    7/8

    使用cpprestsdk开发客户端一般使用如下代码:

    http_client_config config;

    config.set_timeout(utility::seconds(20)); //设置为20秒超时

    http_client client(url), config);

    uri_builder builder(U(/MethodName));

    json::value obj;

    //.... 填充obj json 数据进行post

    builder.append_query(U(jsonData), obj.serialize().c_str());

    http_response response = client.request(methods::GET, builder.to_string()).get();

    if (response.status_code() == status_codes::OK)

    {

    try

    { //获取数据

    const json::value jv = response.extract_json().get();

    if (jv.is_object())

    {

    LOG(ERROR)MESconversions::to_utf8string(jv.serialize());

    const web::json::object jobj = jv.as_object();

    return { _wcsicmp(jobj.at(Lstatus).as_string().c_str(), Ltrue) == 0,conversions::to_utf8string(jobj.at(Lresult).as_string()) };

    }

    }

    catch (const std::exception e)

    {

    return { false,u8MES 回传格式有误: };

    }

    }

    8/8

    使用cpprestsdk 容易出错的是字符编码问题,在开发客户端前,先确认服务端需要提交的数据是哪种字符编码,常用的是utf-8,(visual studio 默认创建的工程使用的是unicode格式),所以要经常使用到conversions::to_utf8string类似的格式转换。

    注意事项

    在开发客户端前,先确认服务端需要提交的数据是哪种字符编码,避免提交数据乱码或不识别

    RESTCPPRESTSDK
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_256558.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 10:51:41  耗时:0.027
    0.0275s