日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

API通道SDK

更新時(shí)間:

API通道SDK是IoT官方服務(wù)的API通道。API通道基于HTTPS協(xié)議,并通過整合安全組件來提升通道的安全性。集成該SDK后,可以通過調(diào)用SDK的請(qǐng)求接口,完成對(duì)生活物聯(lián)網(wǎng)平臺(tái)云端接口的調(diào)用。

引入方式

  • Maven倉庫

    maven {
        url "http://maven.aliyun.com/nexus/content/repositories/releases/"
    }
  • gradle依賴

    api 'com.aliyun.iot.aep.sdk:apiclient:0.0.9.1'
    api 'com.aliyun.alink.linksdk:api-client-biz:1.0.1'
  • 混淆配置

    proguard-rules.pro文件中,加入以下代碼,排除不需要被混淆的類和方法。

    -keep public class com.aliyun.iot.aep.sdk.apiclient.** {
        public <methods>;
        public <fields>;
    }

初始化

初始化的操作請(qǐng)參見SDK初始化

使用方式

  • 請(qǐng)求調(diào)用

    以下接口示例是根據(jù)設(shè)備端iotId查詢?cè)O(shè)備的詳情和綁定關(guān)系的接口,云端介紹請(qǐng)參見根據(jù)設(shè)備獲取綁定關(guān)系

    // 構(gòu)建請(qǐng)求
    Map<String, Object> params = new HashMap<>();
    params.put("pageNo", 1);
    params.put("pageSize", 100);
    // iotId獲取當(dāng)前賬號(hào)綁定設(shè)備列表的時(shí)候可以拿到,對(duì)應(yīng)唯一設(shè)備
    params.put("iotId", "xxxx); 
    
    IoTRequest request = new IoTRequestBuilder()
        .setScheme(Scheme.HTTPS) // 設(shè)置Scheme方式,取值范圍:Scheme.HTTP或Scheme.HTTPS,默認(rèn)為Scheme.HTTPS
        .setPath("uc/listBindingByDev") // 參照API文檔,設(shè)置API接口描述中的Path,本示例為uc/listBindingByDev
        .setApiVersion("1.0.2")  // 參照API文檔,設(shè)置API接口的版本號(hào),本示例為1.0.2
        .authType("iotAuth") // 當(dāng)云端接口需要用戶身份鑒權(quán)時(shí)需要設(shè)置該參數(shù),反之則不需要設(shè)置
        .addParam("input", "測試") // 參照API文檔,設(shè)置API接口的參數(shù),也可以使用.setParams(Map<Strign,Object> params)來設(shè)置
        .build();
    
    
    // 獲取Client實(shí)例,并發(fā)送請(qǐng)求
    IoTAPIClient ioTAPIClient = new IoTAPIClientFactory().getClient();
    ioTAPIClient.send(request, new IoTCallback() {
        @Override
        public void onFailure(IoTRequest request, Exception e) {
            // TODO根據(jù)e,處理異常
        }
    
        @Override
        public void onResponse(IoTRequest request, IoTResponse response) {
            int code = response.getCode();
    
            // 200 代表成功
            if(200 != code){
                //失敗示例,參見 "異常數(shù)據(jù)返回示例"
                String mesage = response.getMessage();
                String localizedMsg = response.getLocalizedMsg();
                //TODO,根據(jù)mesage和localizedMsg,處理失敗信息
                return;
            }
            Object data = response.getData();
            //TODO,可以將data轉(zhuǎn)成一個(gè)本地的對(duì)象或者直接使用JSONObject進(jìn)行數(shù)據(jù)解析
    
            /**
             * 解析data,data示例參見"正常數(shù)據(jù)返回示例"
             * 以下解析示例采用fastjson針對(duì)"正常數(shù)據(jù)返回示例",解析各個(gè)數(shù)據(jù)節(jié)點(diǎn)
            */
            if (data == null) {    
                return;
            }
            JSONObject jsonObject = JSON.parseObject(data.toString());
            //獲取業(yè)務(wù)層code
            String codeBiz = jsonObject.getString("code");
            //獲取業(yè)務(wù)返回的數(shù)據(jù)
            JSONObject dataBizJsonObject = jsonObject.getJSONObject("data");
            //獲取data,data數(shù)據(jù)是一個(gè)JSONArray,即設(shè)備列表
            JSONArray devListJsonArray = dataBizJsonObject.getJSONArray("data");
            //后續(xù)具體設(shè)備信息,則是對(duì)devListJsonArray進(jìn)行一個(gè)遍歷解析了
            if (devListJsonArray != null) {
                for (int i = 0; i < devListJsonArray.size(); i++) {
                    JSONObject devJsonObject = devListJsonArray.getJSONObject(i);
                    // TODO 從 devJsonObject 解析出各個(gè)字段
                }
            }
        }
    });    
  • 正常數(shù)據(jù)返回示例

    {
        "code":200,
        "data":{
            "total":1,
            "data":[
                {
                    "productModel":"X1",
                    "gmtModified":1581772608000,
                    "categoryImage":"http://iotx-paas-admin.oss-cn-shanghai.aliyuncs.com/publish-sg/image/xxxx.png",
                    "netType":"NET_WIFI",
                    "description":"February 15, 2020 9:16:48 PM CST Add binding",
                    "nodeType":"DEVICE",
                    "productKey":"xxx",
                    "deviceName":"xxxx",
                    "productName":"xxxx",
                    "identityAlias":"xxxxxx",
                    "iotId":"xrHAYrQDFSEpexxxx",
                    "owned":1,
                    "identityId":"5053ope232f4xxxx",
                    "thingType":"DEVICE",
                    "status":3
                }
            ],
            "pageNo":1,
            "pageSize":100
        },
        "id":"5168fe23-xxx-xxx-962c-1f61b8bdbd2d"
    }
  • 異常數(shù)據(jù)返回示例

    {
         "code":2064,
         "id":"4fa207ca-fffd-xxxx-xxxx-e6f7ca6c99c3",
         "localizedMsg":"請(qǐng)求錯(cuò)誤",
         "message":"need authorize to bind"
    }

添加日志

API通道SDK本身沒有輸出任何請(qǐng)求日志(從性能和安全性的角度考慮)。您在開發(fā)過程中,可以選擇以下任一方式來打印日志。

  • 自行添加Tracker

  • 使用內(nèi)置的LogTracker(如以下代碼所示)。

  • 在初始化中,傳入debug=true

  • 初始化后調(diào)用IoTSmart.setDebug(true)打開SDK調(diào)試日志開關(guān)。

IoTAPIClientImpl.getInstance().registerTracker(new Tracker() {
    @Override
    public void onSend(IoTRequest ioTRequest) {
        // 收到上層接口請(qǐng)求,請(qǐng)求發(fā)送前觸發(fā)
    }

    @Override
    public void onFailure(IoTRequest ioTRequest, Exception e) {
        // 請(qǐng)求失敗時(shí)觸發(fā)
    }

    @Override
    public void onResponse(IoTRequest ioTRequest, IoTResponse ioTResponse) {
        // 請(qǐng)求成功時(shí)觸發(fā)
    }

    @Override
    public void onRealSend(IoTRequestWrapper ioTRequestWrapper) {
        // 上層接口發(fā)送之后觸發(fā)
    }

    @Override
    public void onRawFailure(IoTRequestWrapper ioTRequestWrapper, Exception e) {
        // API 網(wǎng)關(guān) SDK 接口請(qǐng)求失敗時(shí)觸發(fā)
    }

    @Override
    public void onRawResponse(IoTRequestWrapper ioTRequestWrapper, IoTResponse ioTResponse) {
        // API 網(wǎng)關(guān) SDK 接口響應(yīng)成功時(shí)觸發(fā)    
    }
});

常見錯(cuò)誤

錯(cuò)誤碼列表包含了初始化常見的一些錯(cuò)誤,可以在logcat中看到如下異常信息。其它業(yè)務(wù)相關(guān)接口錯(cuò)誤碼、含義及解決方式請(qǐng)參見 常見問題

錯(cuò)誤碼

含義

解決方法

103

安全組件so加載失敗

過濾掉x86架構(gòu)

202

安全圖片與當(dāng)前apk的簽名不匹配導(dǎo)致的

修改當(dāng)前apk簽名

203

未找到安全圖片

  • 檢查安全圖片是否存在或者authCode是否正確

  • 是否開啟資源優(yōu)化導(dǎo)致

  • 是否啟用instant run導(dǎo)致無法加載