安卓android向onenet物联网云平台请求数据(接入协议mqtts)

这篇具有很好参考价值的文章主要介绍了安卓android向onenet物联网云平台请求数据(接入协议mqtts)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用android向onenet物联网云平台请求数据

第一步:

在manifest加入<uses-permission android:name="android.permission.INTERNET"/>,如图所示:

安卓android向onenet物联网云平台请求数据(接入协议mqtts)

第二步:

在xml文件夹中创建一个名为“network_security_config”的xml文件,如图所示:

安卓android向onenet物联网云平台请求数据(接入协议mqtts)

其内容为:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

第三步:

由于本人是用okhttp进行网络请求的,所以需要在build.gradle中加入此句:

implementation 'com.squareup.okhttp3:okhttp:3.10.0'

okhttp有很多版本,最新版可通过其官网查看Overview - OkHttp (square.github.io)

安卓android向onenet物联网云平台请求数据(接入协议mqtts)

第四部:

上代码!!

package com.example.???;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import java.io.IOException;
import java.util.Arrays;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

//if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

public class MainActivity extends AppCompatActivity {
private TextView textView1;
    private TextView textView2;
    private TextView textView3;
    private TextView textView4;
    private Button button;

    private String[] name = new String[4];
    private String[] val = new String[4];

    private String DEVICE_ID = "设备id";
    private String PRODUCT_ID = "产品id";
    private String APIKey = "设备的key";
    private String PRODUCT_KEY = "产品的key";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button1);

        button.setOnClickListener(new View.OnClickListener() {
@Override
            public void onClick(View view) {
                s();
            }
        });
    }

public void s() {
//同步请求
//            new Thread(new Runnable() {
//                @RequiresApi(api = Build.VERSION_CODES.O)
//                @Override
//                public void run() {
//                    try {
//                        OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象
//                        Request request = new Request.Builder()
//                                .url(String.format("http://api.heclouds.com/devices/%s/datapoints?",DEVICE_ID ))//请求接口。如果需要传参拼接到接口后面。
//                                .addHeader("Authorization","填入你的token,注意填入的token不要超过登陆限制的时长,否则失败")
//                                .build();//创建Request 对象
//                        Response response = null;
//                        response = client.newCall(request).execute();//得到Response 对象
//                        if (response.body() != null) {
//                            String data = response.body().string();
//                            JSONObject jsonObject = new JSONObject(data);
//                            Log.d("kwwl","response.code()=="+response.code());
//                            Log.d("kwwl","response.message()=="+response.message());
                            Log.d("kwwl","res=="+response.body().string());
//                            Log.d("kwwl","res=="+data);
//                            Log.d("kwwl","type of body"+data.getClass().getTypeName());
                            Log.d("kwwl", (String) jsonObject.get("errno"));
//                          
//                            textView = findViewById(R.id.textview1);
//                            textView.setText(data);
//                        }
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//            }).start();

        //异步请求
        new Thread(new Runnable() {
@Override
            public void run() {
                OkHttpClient client = new OkHttpClient();
                FormBody.Builder form = new FormBody.Builder();
                form.add("led_state", "1");
                Request request = new Request.Builder()
                        .url(String.format("http://api.heclouds.com/devices/%s/datapoints?", DEVICE_ID))//请求接口。如果需要传参拼接到接口后面。
                        .addHeader("Authorization", "你的token")
                        .build();//创建Request 对象
                client.newCall(request).enqueue(new Callback() {
@Override
                    public void onFailure(Call call, IOException e) {

                    }
@Override
                    public void onResponse(Call call, Response response) throws IOException {
if (response.body() != null) {
                            String result = response.body().string();
                            Log.d("kwwl", "message==" + response.message());
                            Log.d("kwwl", "code==" + response.code());
                            Log.d("kwwl", "data==" + result);
                            try {
                                JSONObject jsonObject = new JSONObject(result);
                                JSONObject data = jsonObject.getJSONObject("data");
                                JSONArray datasteams = data.getJSONArray("datastreams");
                                for (int i = 0; i < datasteams.length(); i++) {
                                    JSONObject indexObj = datasteams.getJSONObject(i);
                                    String id = indexObj.optString("id");
                                    name[i] = id;
                                    JSONArray datapoints = indexObj.getJSONArray("datapoints");
                                    JSONObject valueB = datapoints.getJSONObject(0);
                                    String value = valueB.optString("value");
                                    Log.d("kwwl", "value====" + value);
                                    val[i] = value;
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
for (int i = 0; i < name.length; i++) {
                                Log.d("kwwl", "类型:" + name[i] + "\t" + "数值:" + val[i]);
                            }

textView1 = findViewById(R.id.textview1);
                            textView2 = findViewById(R.id.textview2);
                            textView3 = findViewById(R.id.textview3);
                            textView4 = findViewById(R.id.textview4);
                            String str1 = "类型:" + name[0] + "\t" + "数值:" + val[0];
                            textView1.setText(str1);
                            String str2 = "类型:" + name[1] + "\t" + "数值:" + val[1];
                            textView2.setText(str2);
                            String str3 = "类型:" + name[2] + "\t" + "数值:" + val[2];
                            textView3.setText(str3);
                            String str4 = "类型:" + name[3] + "\t" + "数值:" + val[3];
                            textView4.setText(str4);
                        }
                    }
                });
            }
        }).start();
    }
}

onenet平台中,如果设备接入的是mqtts协议,那么想要对其发起数据请求,貌似只能通过Authorization的方式进行数据请求,但官方文档说除了此方式外还可以通过apk-key的方式也行,但是本人试了不行,而且后面客服反馈说如果是mqtts协议,就只能Authorization的方式请求,官方文档给出的东西还是有坑的,小伙伴们记得闭坑,不知道啥时候才能改过来。

除此之外,以上还提到了token,我们可以通过使用官方给出的代码生成自己的token,连接如下:

java_开发者文档_OneNET (10086.cn)

python_开发者文档_OneNET (10086.cn)

一个是java的代码另一个则是python的,大家自行选择。(注意:官方还推出了token计算工具,在此嘱咐大家别用这个工具,因为使用这个工具生成的token是请求不到数据的,所以大家还是用代码吧,代码也挺香的)

<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请求数据"
        android:id="@+id/button1"
        />

    <TextView
        android:id="@+id/textview1"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="textview"
        android:textSize="22sp"
        />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="textview"
        android:textSize="22sp"
        />

    <TextView
        android:id="@+id/textview3"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="textview"
        android:textSize="22sp"
        />

    <TextView
        android:id="@+id/textview4"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="textview"
        android:textSize="22sp"
        />

</LinearLayout>

效果:

点一下button按钮后稍等一段时间

安卓android向onenet物联网云平台请求数据(接入协议mqtts)

注:以上代码只有一个MainActivity和activity_main.xml文件,结构很简单,主要是想实现一个通过android开发工具实现对onenet物联网云平台设备数据的请求。文章来源地址https://www.toymoban.com/news/detail-427105.html

到了这里,关于安卓android向onenet物联网云平台请求数据(接入协议mqtts)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 车联网场景中 JT/T 808 协议终端免开发快速接入阿里云 IoT 物联网平台实战

    车联网场景中 JT/T 808协议 是一种在中国广泛应用的车载终端通信协议,用于车辆与监控中心之间的数据通信。 01 JT/T808 协议 JT/T808 协议是指交通部颁布的《 道路运输车辆卫星定位系统终端通讯协议及数据格式 》,广泛应用于车辆远程监管、物流管理、车辆安防等领域。它为

    2024年02月04日
    浏览(47)
  • SIM800C连接OneNet平台HTTP协议上传GPS数据

    科技进步不断推动新产品的出现,越来越多的电子产品开始着力解决社会焦点问题,随着城市发展以及人口流动性的增加,儿童户外被拐,老人外出走丢,交通工具被盗和大型物件丢失等问题变样严重起来,因此,为了更好地利用现代科学技术解决社会关注的问题。本文就设计出一款基

    2024年02月02日
    浏览(43)
  • 基于STM32和oneNET云平台的数据采集系统(MQTT协议)

    该篇为基于stm32+esp8266通过 mqtt 协议连接 onenet 物联网云平台,单片机部分将采集到的数据(温湿度、光照强度、压强等等)上传至云平台服务器,云平台可下发指令操控单片机,实现远程通信。 1. 第一步,注册账号后点击右上角 控制台 2. 第二步,看左上角 选择切换旧版本 3.

    2024年02月06日
    浏览(43)
  • 1-基本控制篇(阿里云物联网平台)-C#,网页,android,微信小程序,单片机等使用MQTT接入阿里云物联网平台

    \\\"ProductKey\\\": \\\"a1m7er1nJbQ\\\", \\\"DeviceName\\\": \\\"Mqtt\\\", \\\"DeviceSecret\\\": \\\"7GUrQwgDUcXWV3EIuLwdEvmRPWcl7VsU\\\" 如何使用MQTT协议模拟设备快速接入物联网平台_物联网平台(IoT)-阿里云帮助中心    阿里云的说明文档 a1m7er1nJbQ.iot-as-mqtt.${region}.aliyuncs.com a1m7er1nJbQ.iot-as-mqtt.cn-shanghai.aliyuncs.com 112233445566|securemode=3,s

    2024年04月12日
    浏览(126)
  • STM32+ESP8266+DHT11通过MQTT协议连接新版ONENET云平台上传数据

    项目讲解视频 新版 云平台搭建视频演示 单片机代码修改演示视频 APP参数修改 实物演示 前段时间ONENET云平台进行了升级更新,此前平台的多协议接入(包含旧版MQTT、HTTP、EDP、Modbus、TCP透传等)接口已经隐藏,后续应该会下架,为了能够后续继续使用ONENET云平台,就需要学

    2024年02月09日
    浏览(34)
  • 新版ONENET物联网开放平台AT+MQTT指令连接

    ONENET物联网平台自4月28日更新后,暂时没有完整的教程,本文目的旨在帮助大家通过AT+MQTT指令连接到ONENET云平台: 本教程在B站录制有视频教程两个教程结合使用效果更佳: 新版ONENET物联网开放平台ESP8266的AT+MQTT固件库串口通信模拟连接_哔哩哔哩_bilibili 新版ONENET物联网开放

    2024年02月08日
    浏览(36)
  • 物联网实践教程(终章):微信小程序结合OneNET平台MQTT实现51/STM32单片机智能控制与温度等数据实时显示【微信小程序篇】

    本项目教程总共分为四节 1.创建OneNET新版MQTT设备:为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务) 2.ESP8266-01s入门:烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务) 3.物联网实践教程:微信小程序结合OneNET平台MQTT实

    2024年02月03日
    浏览(88)
  • 手把手教你玩物联网(二)---onenet云平台产品创建

    《手把手教你玩物联网》系列推文将介绍使用RT-Thread----小而美的物联网操作系统,制作一个室内温湿度数据采集,并实现终端采集数据上传物联网云平台onenet,实现云端远程数据监控功能。       上期介绍了ESP8266的使用(手把手教你玩物联网(一)---ESP8266软件包的使用),今

    2024年02月07日
    浏览(44)
  • OneNet平台使用可视化界面(MQTT协议)

    项目效果: 在OneNet平台建立一个可视化界面,实现效果是下位机的温度,湿度可以在该界面显示,同时该界面可以控制下位机的灯亮与灭。 搭建环境: 软件:keil(编写C语言-修改硬件的程序)+onenet平台(建立可视化界面-上位机功能); 硬件:野火指南者开发板; 可视化界面:

    2024年02月05日
    浏览(44)
  • 微信小程序向新版OneNet云平台发送get请求

    图1.1 这个是我添加的数据你们可以自行添加自己需要读取的数据 图1.2 输入自己的产品ID以及产品名称 图1.3 右下角有获取到结果就没错,然后打开我们的微信小程序 我们也可以通过ApiPost软件向OneNet云平台发送get请求 要使用wx.request发起GET请求,可以使用以下代码: 在上面的

    2024年04月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包