Android网络请求框架使用 -- OkHttp
来源:互联网 发布:乐乎城市青年公寓黄村 编辑:程序博客网 时间:2024/06/01 16:55
一、在build.gradle中引入OkHttp依赖
那么我们怎么引入呢,相信对于Android的新手来说可能不知道如何找到依赖包的正确版本。分享一下我是如何正确的找到版本并引入的。
1、打开Github,在输入框中输入OkHttp然后回车,点开第一个。在后面的使用介绍当中就可以看到gradle的正确版本了,如果以后有使用其他的开源框架也可以使用同样的方式查看正确的版本。
二、在代码中如何使用OkHttp进行网络请求
1、首先Android要进行网络请求,那么肯定需要添加网络请求权限。
<!--网络请求权限--> <uses-permission android:name="android.permission.INTERNET"/>
2、在代码中如何请求API
网络请求常用的请求方式,Get和Post两总请求方式,两个请求方式有什么区别这里就不赘述了。
①、 Get请求
public void okHttpGetRequest(){ //1、拿到OKHttpClient对象 OkHttpClient client = new OkHttpClient(); //2、构造Request final Request request = new Request.Builder().url(NetworkRequestUrl.HOMEPAGE_URL+"titleNewApi.jsp?maxid=0&format=xml&type=android").build(); //3、将Requsest封装成Call对象 okhttp3.Call call = client.newCall(request); //4、执行Call call.enqueue(new Callback() { @Override public void onFailure(okhttp3.Call call, IOException e) { DebugLogUtil.e(e.getMessage()); } @Override public void onResponse(okhttp3.Call call, Response response) throws IOException { String string = response.body().string(); DebugLogUtil.e("服务器返回XML数据:"+string); } }); }
②、Post请求
public void okHttpPostRequest(){ //1、拿到OKHttpClient对象 OkHttpClient client = new OkHttpClient(); //Post请求 FormBody.Builder fb = new FormBody.Builder(); fb.add("maxid","0"); fb.add("format","xml"); fb.add("type","android"); final Request request = new Request.Builder().url(NetworkRequestUrl.HOMEPAGE_URL+"titleNewApi.jsp?").post(fb.build()).build(); okhttp3.Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(okhttp3.Call call, IOException e) { } @Override public void onResponse(okhttp3.Call call, Response response) throws IOException { //获取body中的数据 InputStream inputStream = response.body().byteStream(); } }); }
可以看到两个请求方式很相似,但是还是有些许不同。了解Get和Post两种请求方式的就应该知道,Get请求入参都是拼接在URL后面,也就是请求头当中。Post请求则是将入参封装在请求体当中,所以可以看到OkHttp Get请求和Post请求当中最大的区别就是Get请求的入参是拼接在URL后面,Post则是使用FormBody.Builder 对数据进行了封装。请求完成之后,会有两个接口回掉方法失败和响应。请求成功之后可以在response中获取获取响应体中的数据,数据可以以多种类型返回,这个就看你自己具体需求。
③ 更新UI
需要注意的是,不能直接在onResponse中更新UI。因为这里是子线程,我们需要在UI线程中更新UI,这里有两种方式。runOnUiThread 和 Handle,如果不知道如何使用,自行百度一下,很简单。
- Android网络请求框架的使用okhttp
- Android网络请求框架使用 -- OkHttp
- Android ——网络请求框架OkHttp使用
- 在android中使用OkHttp框架处理网络请求
- Android网络框架-OkHttp使用
- Android网络框架-OkHttp使用
- Android网络请求框架剖析一、Okhttp
- Android网络请求框架:OkHttp代码
- okhttp网络请求框架的简单使用
- 网络请求框架okhttp的使用
- OkHttp网络请求框架的使用
- okhttp网络请求框架
- 网络请求框架OKHttp
- OkHttp网络请求框架
- 网络请求okhttp框架
- OkHttp网络请求框架
- 网络请求 框架okhttp
- Android使用Retrofit+OkHttp实现网络请求
- 安装Markdown Pad for windows
- Android EditText与Button和Button点击出现的Dialog联动问题
- React Native运行第一个程序
- jsp
- 标准模板库(STL)
- Android网络请求框架使用 -- OkHttp
- ubuntu 1604 搭建samba服务器
- SGISTL源码探究-STL中的红黑树(上)
- Guava
- 多次进行dfs没有对辅助数据结构进行重新赋初始值
- 版本更新
- Linux中断机制
- JAVA学习笔记-----可见性(synchronized/volatile)
- Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细介绍