使用okhttp请求聚合数据之星座运势

本篇数据来源:聚合数据,一个简单的例子,通过调用API接口进行数据解析后,加载到我们的模拟器中。开始之前我们要清楚做这个demo的一个具体步骤,下面我将一步步进行编写。

首先准备工作:

导入okhttp与Gson()的库:在build.gradle(.app)中

implementation 'com.squareup.okhttp3:okhttp:3.8.0'
implementation 'com.google.code.gson:gson:2.9.1'

还有网络请求权限在AndroidManifest.xml中加入

<uses-permission android:name="android.permission.INTERNET"/>

还有一点:在Android 9.0(P ,API 28)版本中,限制了http明文流量的网络请求,未加密的流量请求都会被系统禁掉。

所以如果当前应用的请求是 htttp 请求,而非 https,这样就会导系统禁止当前应用进行该请求。

我们还需要加入一行代码:

 <application...android:usesCleartextTraffic="true"...</application>

好了,现在可以开始写代码了。

一、布局代码

布局代码很简单,就一个输入框和放数据的文本以及一个按钮

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal">
<!-- 输入框 --><EditTextandroid:id="@+id/ed1"android:layout_width="250dp"android:layout_height="wrap_content"android:hint="输入你的星座" />
<!-- 按钮--><Buttonandroid:id="@+id/but1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:backgroundTint="#81B348"android:text="查询" /></LinearLayout>
<!-- 文本 --><TextViewandroid:id="@+id/tv1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#0B0A0A"android:textSize="18sp" /></LinearLayout>
</FrameLayout>

关于布局文件就不多说了

二、主逻辑代码

在MainActivity编写我们的逻辑代码,也很简单1、获取控件id,2、进行网络请求,3、解析数据

上代码

package com.example.myapplicationimport android.annotation.SuppressLint
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.gson.Gson
import okhttp3.OkHttpClient
import okhttp3.Request
import kotlin.concurrent.threadclass MainActivity : AppCompatActivity() {//定义变量获取控件lateinit var ed1: EditTextlateinit var tv1: TextViewlateinit var but1: Button@SuppressLint("SetTextI18n")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//获取控件ided1 = findViewById(R.id.ed1)tv1 = findViewById(R.id.tv1)but1 = findViewById(R.id.but1)//案件跳转事件but1.setOnClickListener {val a = ed1.text.toString()             //获取输入框的内容,也就是待会我们输入的星座//在子线程中开始进行数据请求,这个写法一般都是固定的使用的是GET请求thread {val request = Request.Builder().url("http://web.juhe.cn/constellation/getAll?consName=$a&type=today&key=聚合数据申请的key").build()val response = OkHttpClient().newCall(request).execute()    //调用okhttp的execute()方法获取链接返回的数据val json = response.body()?.string()                        //得到具体返回的数据val responseNews = Gson().fromJson(json, News::class.java)  //开始进行第三步,数据解析,这里我使用的是GSON(),那么我们就要先创建一个Gson()数据类if (responseNews != null) {runOnUiThread {                                         //最后关于视图刷新,也就是ui的操作需要放在主线程里tv1.setText("星座名称:" + responseNews.name + "\n"+ "查询时间:" + responseNews.datetime + "\n"+ "综合指数:" + responseNews.all + "\n"+ "幸运色:" + responseNews.color + "\n"+ "健康指数: " + responseNews.health + "\n"+ "爱情指数: " + responseNews.love + "\n"+ "财运指数: " + responseNews.money + "\n"+ "幸运数字: " + responseNews.number + "\n"+ "速配星座: " + responseNews.QFriend + "\n"+ "今日概述: " + responseNews.summary + "\n"+ "工作指数: " + responseNews.work + "\n")}}}}}
}

上述代码其实都很好理解,okhttp的请求方式基本是固定的,下面展示Gson()的数据类,然后你就能理解关于视图刷新的这个写法了

三、创建一个Gson()的数据类

其实这步应该放在第二步的,草率了....不过不影响,咋们继续,现在有个问题,就是我们要创建什么数据类呢?其实也很简单

要创建什么数据类,就要看服务器给我们返回了什么数据,以及我们需要什么数据,下面我们去看聚合数据具体给我们返回了什么数据(对了聚合数据返回的是json格式的数据)

 也就是:

{
"date":20221013,
"name":"天秤座",
"QFriend":"天秤座",
"color":"浅蓝色",
"datetime":"2022年10月13日",
"health":"80",
"love":"80",
"work":"75",
"money":"80",
"number":8,
"summary":"运势的不稳定因素较多,容易出现模棱两可的态度,受到各种建议或评价的干扰。存在感比较低,过于沉默做事的姿态也会容易让别人忽略你所付出的努力。生活方面容易在无聊的事情上浪费时间,比如逛微博或是发呆等。",
"all":"85",
"resultcode":"200",
"error_code

(这样看可能清晰一点)

通过聚合数据请求我们可以看到返回的相关数据,那么现在我们就去创建一个数据类,(因为本人用的kotlin可能和java有些差别,不过差别不大,有时间我可以出一个java版本的)看代码:

package com.example.myapplication//GSON数据类
data class News(val name : String,val QFriend : String,val color : String,val datetime: String,val all : String,val health : String,val love : String,val money : String,val number : String,val summary : String,val work : String)

可以看到非常简单就对应着服务器返回的数据格式挨着创建就行,最后回到第二部的最后几行代码:

val responsexz = Gson().fromJson(json, News::class.java)  //开始进行第三步,数据解析,这里我使用的是GSON(),那么我们就要先创建一个Gson()数据类if (responseNews != null) {runOnUiThread {                                         //最后关于视图刷新,也就是ui的操作需要放在主线程里tv1.setText("星座名称:" + responseNews.name + "\n"+ "查询时间:" + responseNews.datetime + "\n"+ "综合指数:" + responseNews.all + "\n"+ "幸运色:" + responseNews.color + "\n"+ "健康指数: " + responseNews.health + "\n"+ "爱情指数: " + responseNews.love + "\n"+ "财运指数: " + responseNews.money + "\n"+ "幸运数字: " + responseNews.number + "\n"+ "速配星座: " + responseNews.QFriend + "\n"+ "今日概述: " + responseNews.summary + "\n"+ "工作指数: " + responseNews.work + "\n")}}

现在看这段代码应该比较清晰了,定义一个responsexz变量解析这个json(没错Gson就是这么神奇),然后判断只要我们请求的数据不为空就调用setText方法将解析的数据放到文本框中,其实到这基本就已经结束了

最后我们来看一下运行效果

 

由于我也是个安卓小白,学安卓也是因为兴趣,关于这文章我还是不太会,可能有些地方表达不清楚,欢迎到评论区一起探讨,努力一定会有回报的加油!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35460.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android星座运势

功能描述: App调用聚合数据&#xff0c;实现了12星座查询并显示今日运势、明日运势、本周运势、本月运势功能&#xff0c;同时可以按星座进行搜索&#xff0c;还可以查看实时新闻。适合新手学习聚合数据接口的调用与解析展示。 开发语言: java 技术框架: mvc 开发工具: …

2023最新在线星座运势网站开源源码+只作为参考

正文: 在线星座运势网站开源源码这里&#xff0c;提供了各种星座的最新运势预测&#xff0c;让你知道自己今天的运势如如何&#xff0c;有兴趣的自行去安装体验吧。 程序: wwxsgr.lanzouj.com/i0MXy0mkdcng 图片:

运势运程算命程序源码 星座运势公众号版源码+授权Token

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 1、首页Banner 轮播图 2、九宫格功能&#xff08;星座卡片、星座档案、单向历、姓名解析&#xff09; 3、星座运势 4、测算专区&#xff08;20多种测算栏目&#xff09; 5、测算栏…

python星座分析

python数据分析 python数据分析是一个非常好用的&#xff0c;虽然python数据分析只是刚刚起步&#xff0c;有些功能还未开发完成&#xff0c;但是用来做数据分析是绰绰有余了&#xff0c;本人也是专门研究和学习python数据分析的。 星座数据爬虫 作为一个学习数据分析的人&a…

转:通信里 星座图 到底是什么

本文根据知乎的一篇文章整理而来。 要说星座图&#xff0c;要先从IQ调制说起&#xff1a; IQ调制&#xff1a; IQ解调原理&#xff1a; t-1:0.001:1; f1; ycos(2*pi*2*f*t); subplot(1,2,1);plot(t,y); ysin(2*pi*2*f*t); subplot(1,2,2);plot(t,y); 123456 前面我们讲了IQ…

微信小程序:十二星座运势查询

不错,这是一款星座查询小程序 该款小程序支持分男女查询 支持给综合运势,爱情运势,事业运势,财富运势等等打星 支持每种运势解说,支持查看特点等等功能 另外该款小程序还支持激励视频提前查看明日往后日子的运势 总得来说还是挺好的! 小程序源码下载地址&#xff1a; 微信小…

利用python实现星座运势查询APP

利用python实现星座运势查询APP 学习交流&#xff0c;老鸟指导&#xff0c;直播学习可以进我的python学习交流群 # *_* coding:utf8 *_* import jsonimport requests import tkinter import tkinter.font as myFont from tkinter import ttkapp_key "074ec2ba573ad5cff…

Android星座运势案例

功能描述: App调用聚合数据&#xff0c;实现了12星座查询并显示今日运势、明日运势、本周运势、本月运势功能&#xff0c;同时可以按星座进行搜索&#xff0c;还可以查看实时新闻。适合新手学习聚合数据接口的调用与解析展示。 开发语言: java 技术框架: mvc 开发工具: …

星座运势查询接口

星座运势&#xff0c;12星座 一、接口介绍 本数据包含十二星座的每日运势&#xff0c;明日运势&#xff0c;每周运势&#xff0c;当年运势以及星座配对。具体包括缘份星座、吉利颜色、幸运数字、爱情提醒、运势简评、爱情运势、工作运势、财富运势、健康运势、情欲分析等。可…

政策解读:《生成式人工智能服务管理办法(征求意见稿)》

这个真的得热乎乎的了抢个热点&#xff0c;老于还有一个经济法学的学位&#xff0c;虽然说不是主专业&#xff0c;也算是略微知道一些法律常识。为了各位朋友从业者少踩坑&#xff0c;我把法条逐条解读一下&#xff0c;当然这里面会有技术的成分。希望大家一起遵守法律&#xf…

Stable Diffusion公司重磅开源大语言模型StableLM,又爆火了!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 金磊 发自 凹非寺转载自&#xff1a;量子位&#xff08;QbitAI&#xff09; 万万没想到&#xff0c;以文生图著名的Stable Diffusion&#xff…

windows主机ping不通ubuntu,反向可以解决方法

问题情境 Windows端可以上网ubuntu系统用的是NAT网络连接方式&#xff08;用于保证ubuntu是通过windows的外置网卡来间接上网的&#xff09;在ubuntu端ping网页&#xff08;www.baidu.com&#xff09;或ip地址192.168.1.109(我的主机地址&#xff09;都可以ping通在windows端pi…

从大神Alex Smola与李沐离职AWS创业融资顺利,回看ChatGPT大模型时代“底层武器”演进

“Were building something big ... stay tuned. Talk to me if you want to work on scalable foundation models.” “我们正在建造一个大项目……请继续关注。如果你想在可扩展基础模型上工作&#xff0c;请告诉我。” “参数服务器之父” Alex Smol教授已于2023年2月从美国…

使用UDP实现群聊聊天室

今天为大家带来了一个非常有意思的小程序——UDP实现的群聊聊天室。这个程序使用的UDP协议&#xff0c;并使用DatagramSocket的子类MulticastSocket实现组播&#xff0c;可以部署在一个局域网内的多台电脑上&#xff0c;并可以实现文字群聊。 按照以下几个小节讲解&#xff1a…

【WhatsApp营销】如何为企业构建WhatsApp聊天机器人

关键词&#xff1a;WhatsApp营销&#xff0c;聊天机器人 WhatsApp是全球最受欢迎的消息应用之一。它拥有超过20亿活跃用户&#xff0c;而且目前这个数字还在稳步增长。对于个人来说&#xff0c;WhatsApp是朋友、家人间线上沟通的重要渠道&#xff1b;对于企业而言&#xff0c;…

虚拟人纷纷「出道」,社交泛娱乐场景如何迎接新顶流?

⬆️“政企数智办公行业研究报告及融云新品发布会”明天直播&#xff01; 本月 12 日&#xff0c;花房集团即将于香港上市。关注【融云全球互联网通信云】回复【融云】抽取高颜值大容量高端可乐保温杯哦~ 中国政企数智办公平台 在带货直播平台的赫赫之名下&#xff0c;娱乐直播…

Unity 3D 使 用 MQTT 实 现 数 据 通 信

最近学习需要在Unity中用到MQTT通信&#xff0c;CSDN下载了一些资料都有报错&#xff08;主要是也不太看得懂代码不会改&#xff09;&#xff0c;跟B站up复现了一个简单的demo算是加深了一些学习&#xff0c;有需要的初学者可以自取。 demo实现步骤大致如下 1.HslCommunicati…

太猛了!ChatGPT 到 Moss 足以窥见人工智能的未来

最近大家圈内的话题&#xff0c;是不是除了ChatGPT还是ChatGPT&#xff0c;感觉不聊点ChatGPT都跟不上大家的脚步了。各大社交平台上充斥着各式各样与ChatGPT相关的话题&#xff0c;估计大家都在主动或被动的接收ChatGPT的相关资讯。 今天&#xff0c;我们的重点不在ChatGPT&am…

【方案分享】茶叶品牌小罐茶2020品牌营销推广方案.pdf(附下载链接)

大家好&#xff0c;我是文文&#xff0c;今天给大家分享一份品牌营销干货资料《茶叶品牌小罐茶2020品牌营销推广方案.pdf》,对小罐茶以及品牌营销感兴趣的伙伴别错过啦&#xff01; 另外&#xff0c;我们也搭建了行业交流社群&#xff0c;涵盖营销、电商、互联网、数字化、汽车…

酒水销售网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;网站介绍、帮助信息、酒水资讯、酒水类型、酒水信息、购物分享 管理员&#xff1a; 1、管理网站介…