OkHttp GET 和 POST 的使用
来源:互联网 发布:知乎 二手房 买卖合同 编辑:程序博客网 时间:2024/05/16 05:08
OkHttp GET 和 POST 的使用
1 OkHttp 介绍
Android 开发,不可避免的会用到网络技术,而多数情况下,我们都是使用 HTTP 协议来发送和接收网络数据。Android 系统主要提供两种方式来进行 HTTP 通信,HttpURLConnection 和 HttpClient,但是从 Android 2.3 及以后版本中,Google 推荐使用 HttpURLConnection,究其原因,就是由于 HttpClient 的 API 数量过多,使得我们很难在不破坏兼容性的情况下对它进行升级和扩展,所以目前 Android 团队在提升和优化 HttpClient 方面的工作态度并不积极。HttpURLConnection 是一种多用途、轻量极的 HTTP 客户端,使用它来进行 HTTP 操作可以适用于大多数的应用程序。虽然 HttpURLConnection 的 API 提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。
但也正是因为这样,HttpURLConnection 的使用还是比较复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码,于是乎,一些Android 网络通信框架也就应运而生,今天要讲的就是 OkHttp 开源框架。
OkHttp 可以做很多事,包括上传字符串、上传文件、上传流、上传表格参数、上传多部分的请求、响应 Json、响应缓存等。目前主要流行 Json 数据通信,所以我们就来讲讲基于 Json 通信的 GET 和 POST 请求与响应。
2 下载 OkHttp
介绍了这么多理论知识,接下来就进入实战阶段了,首先下载 OkHttp 的 jar 包,可以去 GitHub 下载最近的包。
这是最新下载地址:https://search.maven.org/remote_content?g=com.squareup.okhttp3&a=okhttp&v=LATEST
当然,你也可以在项目中直接添加编译(用于 Android Studio):compile 'com.squareup.okhttp3:okhttp:3.2.0'
OkHttp 的项目地址:https://github.com/square/okhttp除此之外,还需要添加一个 OkHttp 的依赖包:okio.jar,下载地址:https://search.maven.org/remote_content?g=com.squareup.okio&a=okio&v=LATEST
项目地址:https://github.com/square/okio
编译地址:compile 'com.squareup.okio:okio:1.6.0'
3 GET 请求
我们从最简单的 Http 请求开始学起,首先需要获取一个 OkHttpClient 对象,方法如下:
OkHttpClient mHttpClient = new OkHttpClient();
OkHttpClient 用于管理所有的请求,内部支持并发,所以我们不必每次请求都创建一个 OkHttpClient 对象,这是非常耗费资源的。接下来就是创建一个 Request 对象了,如下所示:
Request request = new Request.Builder() .url("http://www.baidu.com") .build();
然后调用这个请求即可:
mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { Logger.t("123123").i(response.body().string()); }});
通过调用 newCall 方法传入之前创建的 Request 对象,然后调用 enqueue() 方法开始异步请求,该方法需要传入回调接口,用于响应成功和失败的回调。
好了,就是这么简单,运行程序,Logcat 中打印如下数据:
没错,这就是百度返回的 html 代码,我们看起来很吃力,但是浏览器就是根据这些代码进行解析,然后将百度首页显示出来。
好了,最简单的 http 请求已经完成了,实现这个功能大概有三步:
- 创建 OkHttpClient 对象
- 创建 Request 对象
- 将 Request 对象添加到 OkHttpClient 中,并传入回调函数。
4 POST 请求
大家都知道 http 常用的请求分为 GET 和 POST 请求,刚才我们使用的明显是一个 GET 请求,那么,如何发起一个 POST 请求呢?其实很简单,在第二步中有一个 post 方法,就可以传入请求参数。
首先,创建一个 RequestBody 对象,这里我们用它的一个子类 FormBody 创建一个表单数据参数,如下所示:
//表单数据FormBody.Builder builder = new FormBody.Builder();builder.add("xwdoor","xwdoor");RequestBody formBody = builder.build();
然后以此构建 Request 对象,如下所示:
Request request = new Request.Builder() .url("http:www.baidu.com") .post(formBody) .build();
调用 post() 方法,将创建的 RequestBody 对象传入即可。开始请求与前面讲的 GET 请求一样。实现 POST 请求大概分四步:
- 创建 OkHttpClient 对象
- 创建 RequestBody 对象
- 创建 Request 对象
- 将 Request 对象添加到 OkHttpClient 中,并传入回调函数。
5 总结
好了,有了以上技能,就可以满足基本的网络请求了,当然 OkHttp 的其他高级技能,就要靠你满满摸索了。后来我发现,异步请求回调是运行在子线程中的,无法直接更新 UI,所以就没有用它,改用了 Google 提供的 Volley 网络库,下次就来介绍它。
这篇文章用于记录 OkHttp 的基本使用方法,万一以后用到了呢。
- OkHttp GET 和 POST 的使用
- OkHttp GET 和 POST 的使用
- OkHttp GET 和 POST 的使用
- OkHttp GET 和 POST 的使用
- OkHttp的Get和Post
- okhttp网络框架的使用get和post请求
- android 基于OkHttp GET 和 POST 的使用
- OkHttp的使用--GET/POST(异步)
- 简述OkHttp的使用:get、post请求
- Okhttp和Retrofit的get,post请求
- OKhttp的get请求和post请求
- Okhttp的post和get请求数据
- okhttp get post 使用源代码
- OkHttp get和post封装
- OkHttp使用Get和Post两种请求方式
- Android中Okhttp进行get和post提交及数据请求的基本使用
- OkHttp使用Get和Post访问服务器的工具类(一)
- android上面的OkHttp的简单get和post demo
- Android开发高手进阶--学习任务
- 在多线程中体会堆和栈的区别
- xss攻击入门
- 四旋翼无人机飞行控制算法H∞控制
- redis使用(java web项目 + redis jar)
- OkHttp GET 和 POST 的使用
- ListView实例
- Swift-归档解归档
- 基于EasyDarwin的实现远程视频传输--(RTSP之RTSPSession)
- 添加更改文件后重新编译androidstudio
- spring-boot启动不了,报错 java.lang.NoClassDefFoundError: javax/servlet/ServletContext
- Linux ALSA框架之一:ALSA架构简介
- 数据结构与算法分析之----各种常用排序详解
- App环境分离的实现:iOS篇