Android使用OKHTTP解析JSON数据的实例代码
发布时间 - 2026-01-11 02:08:18 点击率:次为了代码重用,我们首先封装一个类。这个类是HttpUtil

HttpUtil.java
package com.example.asus.networktest;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class HttpUtil {
public static void sendOkHttpRequest(final String address, final okhttp3.Callback callback) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(address)
.build();
client.newCall(request).enqueue(callback);
}
}
接着老规矩,写一个实体类,里面包含get/set方法,为了方便这里命名为App.java
App.java
package com.example.asus.networktest;
public class App {
private String other;
private String u_Name;
private String u_id;
private String u_passWord;
private String u_token;
private String u_userName;
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
public String getU_Name() {
return u_Name;
}
public void setU_Name(String u_Name) {
this.u_Name = u_Name;
}
public String getU_id() {
return u_id;
}
public void setU_id(String u_id) {
this.u_id = u_id;
}
public String getU_passWord() {
return u_passWord;
}
public void setU_passWord(String u_passWord) {
this.u_passWord = u_passWord;
}
public String getU_token() {
return u_token;
}
public void setU_token(String u_token) {
this.u_token = u_token;
}
public String getU_userName() {
return u_userName;
}
public void setU_userName(String u_userName) {
thisu_userName = u_userName;
}
}
最后写MainActivity.java
同时为了代码的优化,和为了UI线程操作不出毛病,可以这样写。
MainActivity.java
package com.example.asus.networktest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity implements ViewOnClickListener{
String url="解析地址";
TextView responseText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sendRequest = (Button) findViewById(R.id.send_request);
responseText = (TextView) findViewById(R.id.response_text);
sendRequest.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//这里点击事件后,点击后调用网络请求sendRequestWithOkHttp方法
if (v.getId() == R.id.send_request) {
sendRequestWithOkHttp();
}
}
private void sendRequestWithOkHttp() {
new Thread(new Runnable() {
@Override
public void run() {
//在子线程中执行Http请求,并将最终的请求结果回调到okhttp3.Callback中
HttpUtil.sendOkHttpRequest(url,new okhttp3.Callback(){
@Override
public void onResponse(Call call, Response response) throws IOException {
//得到服务器返回的具体内容
String responseData=responsebody()string();
parseJSONWithGSON(responseData);
//显示UI界面,调用的showResponse方法
showResponse(responseData.toString());
}
@Override
public void onFailure(Call call,IOException e){
//在这里进行异常情况处理
}
});
}
}).start();
}
private void parseJSONWithGSON(String jsonData) {
//使用轻量级的Gson解析得到的json
Gson gson = new Gson();
List<App> appList = gson.fromJson(jsonData, new TypeToken<List<App>>() {}.getType());
for (App app : appList) {
//控制台输出结果,便于查看
Log.d("MainActivity", "other" + app.getOther());
Log.d("MainActivity", "u_Name" + app.getU_Name());
Log.d("MainActivity", "u_id" + app.getU_id());
Log.d("MainActivity", "u_passWord" + app.getU_passWord());
Log.d("MainActivity", "u_token" + app.getU_token());
}
}
private void showResponse(final String response) {
//在子线程中更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// 在这里进行UI操作,将结果显示到界面上
responseText.setText(response);
}
});
}
}
这样开起来是不是感觉很舒服? 这样的写法最大程度避免了Android程序网络请求的阻塞影响主线程,当然,这段代码你可以直接拉过来抄下。
在Java1.8中,貌似加入了Lambda表达式,那么使用表达式可以干嘛呢?
最简单的就是简化书写操作,比如MainActivity.java里面的showResponse下免的开启线程的方法可以写成这个样子的:
// 这里使用Java8的新特性Lambda表达式开启线程
private void showResponse2(final String response) {
//在子线程中更新UI
runOnUiThread(() -> {
// 在这里进行UI操作,将结果显示到界面上
responseTextsetText(response);
});
}
这样的话就简单的许多了,另外点击事件也是非常适合Lambda表达式的,使用表达式可以这样简化一个button的点击事件:
Button button = (Button)findViewById(R.id.bytton);
button.setOnClickListener(v->{
// 处理点击事件
});
或者写成这样:
Button button = (Button)findViewById(R.id.bytton1);
button.setOnClickListener((v)->{
// 处理点击事件
});
这点就先到这里啦,我也是才从Java转向到Android的,代码只能这样了,以后肯定还有更好的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# OKHTTP解析JSON数据
# Android解析JSON数据
# Android使用OKHttp库实现视频文件的上传到服务器功能
# Android Okhttp请求查询购物车的实例代码
# Android 封装Okhttp+Retrofit+RxJava
# 外加拦截器实例
# android 开发中使用okhttp上传文件到服务器
# Android okhttp3.0忽略https证书的方法
# Android使用OkHttp请求自签名的https网站的示例
# Android中okhttp3使用详解
# android通过okhttpClient下载网页内容的实例代码
# Android开发之OkHttpUtils的具体使用方法
# Android OKHTTP的单例和再封装的实例
# Android中实现OkHttp上传文件到服务器并带进度
# android中实现OkHttp下载文件并带进度条
# Android使用OkHttp上传图片的实例代码
# Android OkHttp 结合php 多图片上传实例
# 详解Android中OkHttp3的例子和在子线程更新UI线程的方法
# android Retrofit2+okHttp3使用总结
# Android OkHttp Post上传文件并且携带参数实例详解
# Android OkHttp基本使用详解
# 在这里
# 你可以
# 不出
# 这段
# 并将
# 最简单
# 先到
# 命名为
# 回调
# 很舒服
# 具体内容
# 大家多多
# 这样的话
# 新特性
# 拉过来
# 我也是
# 实体类
# getU_passWord
# setU_passWord
# getU_id
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在建站主机中优化服务器配置?
怎么用AI帮你为初创公司进行市场定位分析?
做企业网站制作流程,企业网站制作基本流程有哪些?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
javascript中的try catch异常捕获机制用法分析
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Swift中switch语句区间和元组模式匹配
*服务器网站为何频现安全漏洞?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Android Socket接口实现即时通讯实例代码
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel如何使用模型观察者?(Observer代码示例)
Laravel如何自定义错误页面(404, 500)?(代码示例)
如何用免费手机建站系统零基础打造专业网站?
如何快速搭建高效WAP手机网站?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何用AWS免费套餐快速搭建高效网站?
怎样使用JSON进行数据交换_它有什么限制
大连 网站制作,大连天途有线官网?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
C++用Dijkstra(迪杰斯特拉)算法求最短路径
JavaScript如何操作视频_媒体API怎么控制播放
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何用低价快速搭建高质量网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
三星、SK海力士获美批准:可向中国出口芯片制造设备
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Android okhttputils现在进度显示实例代码
网易LOFTER官网链接 老福特网页版登录地址
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
如何用已有域名快速搭建网站?
上一篇:如何通过日志优化Linux存储
上一篇:如何通过日志优化Linux存储

