Android网络请求-新大陆物联网云平台请求通信工程-使用Post登录新大陆云平台获取Token-物联网竞赛-物联网数据通信
目录
一、概述
二、代码与实现
三、总结归纳
一、概述
本文将通过Android Studio原生安卓环境,通过Post网络请求与新大陆物联网云平台官网进行通信,实现获取用户Token。
Need:Android Studio、okhttp3
知识点:多线程、Post请求、Json数据封装、基础Android知识
建议先阅读文章:
新大陆物联网竞赛-Android开发-导入JAR包与添加依赖
[初级]JAVA中TCP/HTTP协议JSON数据的封装~三分钟看懂
新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令
二、代码与实现
首先我们下载并打开API开发文档。
新大陆物联网云平台应用最新官方API开发文档_2022
打开API开发文档,找到用户登录的请求,发现请求格式如下:
响应格式如下:
因此我们需要封装Json数据并上传Post数据。
此处我们需要使用okhttp3类库,在Module:app中添加如下代码:
implementation 'com.squareup.okhttp3:okhttp:4.0.0-RC1'
首先,我们需要新建如下对象:
OkHttpClient okHttpClient;Request request;MediaType mediaType;RequestBody requestBody;
其次,我们初始化对象并构建Json请求:
okHttpClient=new OkHttpClient();mediaType=MediaType.get("application/json;charset=utf-8");requestBody=RequestBody.create(mediaType,"{'Account':'1899*******','Password':'******','IsRememberMe':'false'}");request=new Request.Builder().url("http://api.nlecloud.com/Users/Login").post(requestBody).build();
一切完成以后,我们发送Post请求:(网络请求需要多线程实现)
new Thread(new Runnable() {@Overridepublic void run() {try {Response response = okHttpClient.newCall(request).execute();System.out.println(response.body().string());} catch (IOException e) {e.printStackTrace();}}}).start();
我们可以看到Json数据已经返回,下一步将是Json解析。
{"ResultObj":
{"UserID":194912,
"UserName":"",
"Email":"",
"Telphone":"189********",
"Gender":true,
"CollegeID":0,
"CollegeName":"",
"RoleName":"普通会员",
"RoleID":15,
"AccessToken":"5CF6D349FBD9A25BAE9D5FE53E35ECC7C1FAA6FFB0EE1F8AC9307813FD33BC3C694A7E6718D79C948C6B8C91704894426F0DE82DB2FB489865D1D15EAD909889146168CE7E1999BB8F85F4D77EA1EE52F3D4DEC7563C05EEB87AC287B6CD00755A3A91F0F047D469B633FE4C6CC638D1ABB422ABD3691C7FDA1F435871066209DECF65FF1F1D4DA1F4906DB2568179672C064347E50B1D5B20CB270F7F34C1A09FBB0BDD830EBE8346573074439A2FF26ACDD067CC41F2B01B415272E24EC9D3A0E216D7714A58F92A694859934B5907339EFC5595899C6820F69D1F18F47ECA",
"AccessTokenErrCode":0,
"ReturnUrl":null,
"DataToken":"046f4d42a749b6ec"},
"Status":0,
"StatusCode":0,
"Msg":null,
"ErrorObj":null}
之前我在之前的文章提到过,首选JsonObject,本次我们仍然使用它:
JSONObject jsonObject=new JSONObject(response.body().string());System.out.println(jsonObject.get("AccessToken"));
运行后,我们看到如下输出:
W/System.err: org.json.JSONException: No value for AccessTokenat org.json.JSONObject.get(JSONObject.java:389)at org.json.JSONObject.getString(JSONObject.java:550)at com.example.newland.okhttps.MainActivity$1.run(MainActivity.java:43)at java.lang.Thread.run(Thread.java:761)
并没有成功,这是为什么呢?我们查看Json数据,发现其本质上是包含在ResultObj中的,因此我们需要先将此Object取出再做取值操作:
JSONObject jsonObject=new JSONObject(response.body().string());jsonObject=jsonObject.getJSONObject("ResultObj");System.out.println(jsonObject.getString("AccessToken"));
再次运行,查看输出,发现成功取到了Token:
三、总结归纳
本文章提到的功能属于Android中的基础开发功能,需要大家及时掌握并能随心所欲的使用,物联网上位机程序开发中,数据的上传与获取是常用的,这里需要注意本次使用的OKhttp与HttpURLConnection的区别。
Android网络请求-新大陆物联网云平台请求通信工程-使用Post登录新大陆云平台获取Token-物联网竞赛-物联网数据通信相关推荐
- android service前台服务器,Android网络前台向服务端页面请求数据
这是一个android前台向服务端网站请求少量数据的小例子. 首先设计好服务端,再来写安卓前端. 一:服务端 新建动态网站,在java包下新建一个类继承HttpServlet父类,重写doGet()方 ...
- 《物联网 - 机智云开发笔记》第1章 机智云平台快速入门
机智云官网 1.1机智云与GoKit3简介 机智云为开发者提供物联网设备的自助开发工具.后台技术支持服务.设备远程操控管理.数据存储分析.第三方数据整合.硬件社交化等技术服务,也为智能硬件厂家提供一站 ...
- 阿里云轻量服务器 外网卡_阿里云服务器购买流程及注意事项
在上篇文章阿里云服务器怎么选购?中我们介绍了阿里云的云服务器ECS和轻量应用服务器的区别和适用场景,下面我们来看一下这种服务器具体的购买流程以及购买过程中的一些注意事项.(PS:首先你要注册阿里云的账 ...
- 云上武功秘籍(一)华为云上部署金蝶星空ERP
每天琐事缠身,查错.维护.开接口?--不,你可以更加富有创造力! 假期千里迢迢飞回公司机房处理一个小故障?--不,你可以更加自由高效! 如果这就是你的写照,那为什么不选择上云呢? 如果要上云,那为什么 ...
- Android网络请求通信之Volley
一.Volley简介 Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库.以下是对Volley的简单归纳. Volley的优点: 使网络通信更快.更简单. ...
- okhttp的应用详解与源码解析--android网络请求框架发展史
乘5G之势,借物联网之风,Android未来亦可期,Android优势在于开放,手机.平板.车载设备.智能家居等都是Android的舞台,Google不倒,Android不灭,本专栏的同步视频教程已经 ...
- android网络请求流程图,Android OKHttp系列1-流程总结
1. 调用示例 同步方式: new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = ...
- Android中使用retrofit2进行网络get请求查询数据和post请求上传文件
场景 Retrofit2 Retrofit 是对 OkHttp 的封装,是主流的网络框架. 适用于Android 和 Java 的类型安全的HTTP客户端,由Square提供的. Retrofit是一 ...
- Android 网络请求HttpURLConnection 和 HttpClient详解
Android一般通过http协议向服务端接口发送请求,常用有POST和GET传输方式.这种请求通常借助于HttpClient,HttpClient 是 Apache Jakarta Common 下 ...
最新文章
- asp.net MVC3 弹出窗口里嵌一个View代码
- [转].NET 数字格式化:忽略末尾零
- The Common Language Runtime (CLR)
- android app两种调试方法
- 成为Google认证机器学习工程师,零基础只需要2步?
- oracle错误1327,Oracle中的PGA监控报警分析(r11笔记第97天)
- [导入]js 关联数组 详解
- webpack ,require.ensure配合oclazyload 实现ng1模块懒加载
- idea代码格式美化快捷键
- Android提取分区镜像命令,Android取证:使用ADB和DD对文件系统做镜像
- 网页版查询mysql数据_网页查询数据库 数据库查询
- Tableau Desktop 10.4.2 的安装和激活
- 数据字典动态生成下拉框
- Hybrid Trajectory Planning for Autonomous Driving in On-Road Dynamic Scenarios文章解读
- 今天,魅族发布了一款AirPods!
- 短视频和图片去水印的三种方法
- 净亏损大幅减少超90%,阿里影业“回归内容”的背后逻辑是什么?
- 计算两个日期之间的天数,你知道哪些函数能够计算呢?
- 《那些年啊,那些事——一个程序员的奋斗史》——14
- 鸿蒙合香丸有副作用吗,苏合香丸能长期吃吗 有没有副作用
热门文章
- 如何查询快递单号物流及时发现退回件单号
- 战略合作 | 零数科技携手中智关爱通共建基于区块链的新人力服务网络
- 保姆级手把手教你使用 夜神模拟器+burpsuite 实现app抓包
- Auto.js协议实战脚本_抓包(实战二)
- iphone各机型基本配置及购买建议
- Java例题 键盘输入生日 计算出生了多少天
- 生产环境下nginx代理跨域解决
- 快递取件码生成软件_智能快递箱:手机扫码1分钟取件 短信生成密码一柜一码
- 支付宝发口令红包和收口令红包设置攻略教程-2022年1月5日
- linux内存泄漏进程挂掉,Linux 系统内存泄漏的堆积隐患的排查与解决