Android OkHttp 网络请求 使用详解
来源:互联网 发布:知乎为什么会被邀请 编辑:程序博客网 时间:2024/06/06 21:42
对于 Android 开发来说,网络请求是必不可少的一件事情,但想要自己开发一个合适又好用的网络请求框架,对于一般人来说这是一件很难实现的事。毕竟在网络请求的过程中有很多因素需要你考虑到。而且目前 Git 上提供了许多好用又方便的第三方框架让你可以更快更简单的实现网络请求的功能。OkHttp 是目前市场上主流的网络请求第三方框架,它可以让你很轻易的实现许多你想要的网络请求,如:配置网络请求缓存区,处理各种请求结果 等等。。。
OkHttp 使用起来也非常简单快速,首先添加它的依赖:
compile 'com.squareup.okhttp3:okhttp:3.2.0'compile 'com.squareup.okio:okio:1.7.0'
创建一个 OkHttpUtils 网络请求工具类:(这里只是提供了 GET 方法的实现)
import java.io.File;import java.util.concurrent.TimeUnit;import okhttp3.Cache;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;/** * Created by ZY on 2017/6/1. */public class OkHttpUtil { public OkHttpUtil(){ } /** * 通过get来获取网络数据 * @param file 缓存区文件 * @param url 链接地址 * @param callback 请求后的回调 */ public static void getOkHttp(File file, String url, Callback callback){ int cacheSize=10*1024*1024;//设置缓存区大小 OkHttpClient.Builder clientBuilder=new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS)//连接超时时间设置 .readTimeout(5,TimeUnit.SECONDS)//设置读取超时时间 .writeTimeout(5,TimeUnit.SECONDS)//设置写入超时时间 .cache(new Cache(file.getAbsoluteFile(),cacheSize));//设置缓存大小 OkHttpClient okHttpClient=clientBuilder.build();//通过builder来创建客户端实例 Request.Builder builder=new Request.Builder()//初始化Request的Builder实例 .url(url);//设置url builder.method("GET",null);//设置请求方法为 GET(默认为 GET) Request request=builder.build();//通过builder得到Request实例 Call call=okHttpClient.newCall(request);//通过客户端得到call实例 call.enqueue(callback);//发起网络请求并且通过callback来操作返回的结果 }}最后在需要使用的地方直接使用工具类进行网络请求就好了:(OkHttp 内部实现了在子线程中请求,所以不需要开子线程)
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.Button;import java.io.File;import java.io.IOException;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public class MainActivity extends AppCompatActivity { @BindView(R.id.main_get_image_btn) Button mainGetImageBtn; private String url;//声明地址url @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick(R.id.main_get_image_btn) public void onClick() { url = "https://www.baidu.com";//url百度地址 File cache = getExternalCacheDir();//缓存文件 OkHttpUtil.getOkHttp(cache, url, new Callback() {//请求回调 @Override public void onFailure(Call call, IOException e) {//请求失败 Log.d("rongjie", "onFailure: " + e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException {//请求成功 Log.d("rongjie", "onResponse: " + response.networkResponse()); } }); }}
这样一个简单的通过 OkHttp 的GET 请求就实现了 。
ps:别忘了网络权限的开启
阅读全文
0 0
- Android OkHttp 网络请求 使用详解
- Android okHttp网络请求库详解
- Android网络请求框架的使用okhttp
- Android使用Retrofit+OkHttp实现网络请求
- android网络请求okhttp的使用
- Android网络请求框架使用 -- OkHttp
- Android网络请求使用Retrofit+OkHttp,如何获取请求参数 ?
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Android网络请求:OkHttp实战
- Android 网络请求库:okHttp
- Android封装OkHttp网络请求
- OkHttp网络请求的使用
- Android ——网络请求框架OkHttp使用
- Android网络请求使用Retrofit+OKHTTP,如何实现参数加密
- [gdc17]《守望先锋》的EntityComponent架构
- 敏捷初印象
- node实战
- leetcode第十五周解题总结--二分查找(二)
- Satisfactory Pairs
- Android OkHttp 网络请求 使用详解
- CRC校验
- 作为大龄员工,给既将进入大龄的员工几个忠告
- robber问题的动态规划解法
- 如果有人让你推荐编程技术书,请叫他看这个列表
- 自我鼓励
- Linux系统操作笔记
- [LeetCode] 543. Diameter of Binary Tree
- Lucene