OkHttp是一个优秀的网络请求框架,我开始接触Android开发的时候就用过这个网络请求框架,官方的参考文档在这里 https://square.github.io/okhttp/ ,本文演示了使用OkHttp框架进行简单的Get、Post(表单形式和JSON形式)、Delete、附加请求头、请求异步回调,文件的上传和下载等常用操作。最后记录了一个今天调试了很久的坑,那就是response.body().string()只能有效调用一次,注意Debug的时候对结果造成的改变!JDK9的HttpURLConnection有很多变化,下次博客中会有演示和说明。
首选引入这个依赖就可以使用OkHTTP了
1 | <dependency> |
如果是 gradle 管理的项目,则只需要引入:
1 | compile 'com.squareup.okhttp3:okhttp:3.6.0' |
1、Get请求示例
1 | String url = "http://zouchanglin.cn"; |
2、Post请求示例
1、JSON请求
1 | public static void main(String[] args) { |
2、表单数据
1 | public static void main(String[] args) { |
3、Delete请求示例
1 | public static void main(String[] args) { |
4、附加请求头示例
1 | public static void main(String[] args) { |
5、请求异步回调示例
1 | public static void main(String[] args) { |
6、上传文件加参数示例
1 | "upload") ( |
7、下载文件示例
1 | public void downloadImg(View view){ |
8、OkHttp的坑
OkHttp请求回调中response.body().string()只能有效调用一次,调用response.body().string()的时候数据流已经关闭了,再次调用就是提示已经closed,抛出java.lang.IllegalStateException: closed异常,所以这个坑还是有点大,我在debug的时候由于已经监视了一次response.body().string()的返回值,在代码中跑完就是IllegalStateException。 调试代码调试时,表达式的监视有时候会影响代码的运行,比如就像OkHttp这种情况。
- 本文作者: Tim
- 本文链接: https://zouchanglin.cn/2020/03/22/878430602.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 许可协议。转载请注明出处!