Android-网络请求封装类-okhttp
一些友友们写 安卓的时候,都会 用到网络请求,有时候一个java文件就需要用到多次,每次请求的代码重复型较高,就可以考虑到将请求代码封装起来,下面是请求代码,亲测有效!效果俱佳!
1. ·创建一个空白的java类,编写下段代码:
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class MyOkhttp {private String ResponseData = null;private boolean aBoolean = false;public String sendRequest(Request request){OkHttpClient client = new OkHttpClient();Call call = client.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {// 网络请求失败}@Overridepublic void onResponse(Call call, Response response) throws IOException {// 网络请求成功String data = response.body().string();ResponseData = data;aBoolean = true; // 因为这种写法是异步请求,所以需要判断一下是否取到数据}});// 加个循环卡住当前线程,直到取到数据while (true){if (aBoolean)return ResponseData; // 返回数据else{// 没加这段代码前,总是会有取不到数据,看代码都没有发现毛病,加上这个后就可以了,迷,估计是一些小毛病吧,速度太快给个缓冲,不影响效率。try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}}}}
}
2. 调用部分:
【注意:在Android4.0以后,在主线程中的HTTP请求,运行时都会报错 ANRs(“Application Not Responding”),”应用没有响应“。所以需要进行网络请求的时候 还是需要开辟一个子线程,然后等到数据返回成功后再切换为主线程来刷新UI。】
new Thread(()->{ //加个子线程MyOkhttp myOkhttp = new MyOkhttp(); // 创建上面的封装对象Request request = new Request.Builder() .url("网络地址").build();String data = myOkhttp.sendRequest(request); // 获取相应数据......//加下来就是对获取到的数据解析了,注意,对UI进行更改需要切换为主线程,不然会报错。我诺列两种方法切换主线程:1.runOnUiThread(()->{// UI更改代码});2.
写一个全局变量:private Handler handler = new Handler();然后: handler.post(()->{// UI更改代码});}).start();
Android-网络请求封装类-okhttp相关推荐
- okhttp的应用详解与源码解析--android网络请求框架发展史
乘5G之势,借物联网之风,Android未来亦可期,Android优势在于开放,手机.平板.车载设备.智能家居等都是Android的舞台,Google不倒,Android不灭,本专栏的同步视频教程已经 ...
- Android -- 网络请求
一. HttpURLConnection 二. HttpClient 三.Volley 四.OkHttp 五. Retrofit ----------------------------------- ...
- 流行框架(二)网络请求库 OKhttp
文章目录 概述 HttpURLConnection GET和POST获取文本数据 GET POST OKHttp 基本使用 依赖与权限 发起一个get请求 重要概念 OkHttpClient Requ ...
- Android网络请求框架之Retrofit(二)
前面一篇文章介绍了Retrofit的基本用法,没有看过的童鞋可以移步:Android网络请求框架之Retrofit(一),现在我们来继续介绍Retrofit配合RxJava.RxAndroid的用法. ...
- android 设置允许http请求_网络请求框架----OkHttp原理
一.前言 在 Android 中,网络请求是一个必不可少的功能,因此就有许多代表网络请求客户端的组件库,具有代表性的有下面三种: Apache 的 HTTP 客户端组件 HttpClient. Jav ...
- android之网络请求框架OKhttp、原生http请求
===============原生http===================== public class MainActivity extends AppCompatActivity imple ...
- android网络请求撤销,Android OkHttp + Retrofit 取消请求的方法
前言 在某一个界面,用户发起了一个网络请求,因为某种原因用户在网络请求完成前离开了当前界面,比较好的做法是取消这个网络请求.对于OkHttp来说,具体是调用Call的cancel方法. 如何找到这一个 ...
- android网络请求流程图,Android OKHttp系列1-流程总结
1. 调用示例 同步方式: new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = ...
- Android 网络请求详解
我们知道大多数的 Android 应用程序都是通过和服务器进行交互来获取数据的.如果使用 HTTP 协议来发送和接收网络数据,就免不了使用 HttpURLConnection 和 HttpClient ...
- android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava
老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...
最新文章
- 十八、“问余浪子今何在,唯有回头铸梦人”(2021.5.28)
- 通过rtcwake命令设置系统S3(休眠到内存)/S4(挂起到硬盘)一段时间后自动唤醒
- windows 播放MP3音乐
- python定时任务_Python 定时任务最佳实践
- hashmap是有序还是无序_说实话,你要是看完这篇 HashMap ,和面试官扯皮真的就没问题了!
- bazel 链接第三方动态库_如何自己制作静态库?
- 十大经典排序算法(动图演示)(转)
- Maple 全面基础
- 入手kindle 3
- JS中什么是回调函数?
- Linux服务器入侵预防与问题排查
- opencv与PIL处理图像视频
- 已知从1970年1月1日0分0秒到目前的总秒数计算当前时间
- 台式计算机品牌怎么查,教你怎么看电脑主板型号和品牌
- Python:计算任意n阶矩阵行列式
- html文件怎么打印没响应,打印机打印文件时显示未响应是怎么回事
- 可能被你误解的 DRY 原则
- HTML+CSS个人笔记
- Python脚本实现Mac开机自动语音播报天气
- Jess的一些使用示例