1.首先打開連結:
https://next.api.aliyun.com/api/Iot/2018-01-20/Pub?params={}&sdkStyle=old&tab=DEBUG&lang=CPP在這裡調試pub接口,填入正确的ProductKey,TopicFullName,MessageContent,如果是企業執行個體,需要選擇對應的地域和IotInstanceId。

2.在SDK示例中,找到原版的c++代碼,拷貝出來儲存。
截圖中的代碼儲存為 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>
using namespace std;
using namespace 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();
return 0;
}
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.gitcd 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庫已經編譯成功,下面是編譯過程中的截圖。
接下來編譯pub測試用例,把上面的儲存的代碼(本示例中代碼參數需要自行填入,否則會運作失敗),放到伺服器某個地方。
執行指令:
g++ -o pub pub.cc --std=c++11 -lalibabacloud-sdk-core -l alibabacloud-sdk-iot
./pub
下面執行效果: