编译并调用iot中云端api的pub c++版本

简介: 编译并调用iot中云端api的pub c++版本。

1.首先打开链接:https://next.api.aliyun.com/api/Iot/2018-01-20/Pub?params={}&sdkStyle=old&tab=DEBUG&lang=CPP

在这里调试pub接口,填入正确的ProductKeyTopicFullName,MessageContent,如果是企业实例,需要选择对应的地域和IotInstanceId。

image.png

2.在SDK示例中,找到原版的c++代码,拷贝出来保存。image.png

截图中的代码保存为 pub.cc:

#include<cstdlib>

#include<iostream>

#include<alibabacloud/core/AlibabaCloud.h>

#include<alibabacloud/core/CommonRequest.h>

#include<alibabacloud/core/CommonClient.h>

#include<alibabacloud/core/CommonResponse.h>


usingnamespace std;

usingnamespace AlibabaCloud;


int main(int argc,char** argv )

{

   AlibabaCloud::InitializeSdk();

   AlibabaCloud::ClientConfiguration configuration("cn-shanghai");

   // specify timeout when create client.

   configuration.setConnectTimeout(1500);

   configuration.setReadTimeout(4000);

   AlibabaCloud::Credentials credential("","");

   /* use STS Token

   credential.setSessionToken( "" );

   */

   AlibabaCloud::CommonClient client( credential, configuration );

   AlibabaCloud::CommonRequest request(AlibabaCloud::CommonRequest::RequestPattern::RpcPattern);

   request.setHttpMethod(AlibabaCloud::HttpRequest::Method::Post);

   request.setDomain("iot.cn-shanghai.aliyuncs.com");

   request.setVersion("2018-01-20");

   request.setQueryParameter("Action","Pub");

   request.setQueryParameter("TopicFullName","/${productKey}/${deviceName}/user/get");

   request.setQueryParameter("ProductKey","${productKey}");

   request.setQueryParameter("MessageContent","dGhpcyBpcyBhIGV4YW1wbGU=");


   auto response = client.commonResponse(request);

   if(response.isSuccess()){

       printf("request success.\n");

       printf("result: %s\n", response.result().payload().c_str());

   }else{

       printf("error: %s\n", response.error().errorMessage().c_str());

       printf("request id: %s\n", response.error().requestId().c_str());

   }


   AlibabaCloud::ShutdownSdk();

   return0;

}

2.登录阿里云ecs服务器,我的调试环境为:Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-73-generic x86_64)。

参考github中文档中的步骤依次执行:https://github.com/aliyun/aliyun-openapi-cpp-sdk/blob/master/README-CN.md

依次执行命令:

apt-get update

sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev libjsoncpp-dev

//如果没有安装git,需要执行 sudo apt-get install git

git clone https://github.com/aliyun/aliyun-openapi-cpp-sdk.git

cd aliyun-openapi-cpp-sdk

mkdir sdk_build

cd sdk_build

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_PRODUCT="iot"..

make

sudo make install

到此iot库已经编译成功,下面是编译过程中的截图。

1.jpg2.jpg

4.jpg


接下来编译pub测试用例,把上面的保存的代码(本示例中代码参数需要自行填入,否则会运行失败),放到服务器某个地方。

执行命令:

g++ -o pub pub.cc --std=c++11 -lalibabacloud-sdk-core -l alibabacloud-sdk-iot

./pub

下面执行效果:

5.jpg


目录
相关文章
|
24天前
|
自然语言处理 编译器 C语言
为什么C/C++编译腰要先完成汇编
C/C++ 编译过程中先生成汇编语言是历史、技术和实践的共同选择。历史上,汇编语言作为成熟的中间表示方式,简化了工具链;技术上,分阶段编译更高效,汇编便于调试和移植;实践中,保留汇编阶段降低了复杂度,增强了可移植性和优化能力。即使在现代编译器中,汇编仍作为重要桥梁,帮助开发者更好地理解和优化代码。
51 25
为什么C/C++编译腰要先完成汇编
|
6月前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
317 2
|
3月前
|
自然语言处理 编译器 Linux
|
3月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
4月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
269 22
|
4月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
65 0
Linux c/c++之多文档编译
|
4月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
113 2
|
6月前
|
Dart API 开发工具
Dart ffi 使用问题之Dart API要在C++中使用,该如何初始化
Dart ffi 使用问题之Dart API要在C++中使用,该如何初始化
|
2天前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
1月前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
68 19