Android使用Okhttp进行数据交互

Android使用Okhttp进行数据交互,第1张

概述##前言>在遇到Android数据交互的情况时,思考过采取什么方式,在经过一段时间的学习,最终采取Okhttp这一个轻量级网络框架。##1、工具类实现```javapublicclassOkHttpUtil{publicfinalstaticStringTAG="OkHttpUtil";publicfinalstaticintCONNECT_TIM ## 前言>在遇到AndroID数据交互的情况时,思考过采取什么方式,在经过一段时间的学习,最终采取Okhttp这一个轻量级网络框架。## 1、工具类实现```javapublic class OkhttpUtil { public final static String TAG = "OkhttpUtil"; public final static int CONNECT_TIMEOUT = 60; public final static int READ_TIMEOUT = 100; public final static int WRITE_TIMEOUT = 60; // 后台数据接口基础路径 public final static String BASE_URL="http://192.168.64.1:8010"; public static final OkhttpClIEnt clIEnt = new OkhttpClIEnt.Builder() .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)// 设置读取超时时间 .writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)// 设置写的超时时间 .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)// 设置连接超时时间 .build(); public static final MediaType JsON = MediaType.parse("application/Json; charset=utf-8"); //post请求,携带参数 public static String post(String url, String Json) throws IOException { Requestbody body = Requestbody.create(JsON, Json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = clIEnt.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } else { throw new IOException("Unexpected code " + response); } } //get请求。不带参数 public static String get(String url) throws IOException{ Request request = new Request.Builder() .url(url) .get() .build(); Response response = null; //同步请求返回的是response对象 response = clIEnt.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } else { throw new IOException("Unexpected code " + response); } } }```## 2、场景应用举个栗子:商城app中首页中想要获取所有商品数据展示出来后台用的是springboot,数据接口是:/API/commodity/getAllGoodByType```java private voID initProducts() { String url = OkhttpUtil.BASE_URL + "/API/commodity/getAllGoodByType"; // 主线程 new Thread(new Runnable() { @OverrIDe public voID run() { try { String callStr = OkhttpUtil.get(url); JsONObject call_Json = JsONObject.parSEObject(callStr); final String code = call_Json.getString("code"); final String msg = call_Json.getString("msg"); if (code.equals("0")) { proList = JsON.parSEObject(callStr, GoodsBean.class); //开启子线程,更新UI界面 hander.sendEmptyMessage(0); Looper.prepare(); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); Looper.loop(); } else if (code.equals("500")) { Looper.prepare(); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); Looper.loop(); } } catch (IOException e) { e.printstacktrace(); } } }).start(); } //子线程通知主线程更新ui private Handler hander = new Handler(){ @OverrIDe public voID handleMessage(Message msg) { switch(msg.what){ case 0: // notifyDataSetChanged动态更新UI proAd.notifyDataSetChanged(); proAd.add(proList.getData()); // 在适配器上添加数据 recommendRec.setAdapter(proAd); break; default: // do something break; } } };```- 注意:在进行数据交互时,需要在androID中开启网络权限,才能够访问到后台数据 ```xml ``` 总结

以上是内存溢出为你收集整理的Android使用Okhttp进行数据交互全部内容,希望文章能够帮你解决Android使用Okhttp进行数据交互所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1211104.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存