黑马程序员技术交流社区
标题: 【济南校区】凯哥兵法之OkHttp基本使用 [打印本页]
作者: 孟凡凯老师 时间: 2016-5-8 22:55
标题: 【济南校区】凯哥兵法之OkHttp基本使用
本帖最后由 孟凡凯老师 于 2016-5-12 10:14 编辑
概述:
OKHttp是Android版Http客户端。Google官方在6.0版本里面删除了HttpClient相关API,从Android4.4开始HttpURLConnection的底层实现采用的是okHttp。 非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题,
使用范围:
1, OkHttp支持Android 2.3及其以上版本。
2, 对于Java, JDK1.7以上。
下载地址:
jar包下载:https://github.com/square/okhttp
Gradle配置: compile'com.squareup.okhttp3:okhttp:3.2.0'
使用:
OkHttp官方文档并不建议我们创建多个OkHttpClient,因此全局使用一个。
GET请求方式:
- //1, 创建一个OkHttpClient对象
- OkHttpClient okHttpClient = new OkHttpClient();
- //2,构建一个请求对象
- Request request = new Request.Builder().url(url).build();
- //3,发送请求
- try {
- Call call = okHttpClient.newCall(request);
- call.execute();
- //4,打印服务端返回的json串
- Log.i(TAG, "服务器返回的数据"+response.body().string());
复制代码1.创建OkHttpClient对象
2.使用Request.Builder构建请求对象
3.发送请求有两种方式,一种是通过call.execute()返回一个Response,调用response.body().string()方法获取数据另一种是通过call.enqueue(Callbackcallback)方法,传入一个callback对象,实现请求成功和请求失败两个方法。
- call.enqueue(new Callback(){
- @Override
- public void onFailure(Request request, IOException e){
- //请求失败后调用
- }
- @Override
- public void onResponse(final Response response) throws IOException{
- //请求成功后调用
- //此处并不是UI线程
- Log.i(TAG, "服务器返回的数据"+response.body().string());
- }
复制代码4.获取服务器返回的数据 ,
response.body().string()获取字符串,
response.body().bytes()获取的事二进制字节数,
response.body().byteStream()获取的是流数据。
POST请求提交表单:
- //1,创建一个OkHttpClient对象
- OkHttpClient okHttpClient = new OkHttpClient();
- //2,构建请求体
- RequestBody requestBody = new FormBody.Builder()
- .add("userName", "xx")
- .add("passWord", "xxxx")
- .build();
- //3,构建一个请求对象
- Request request = new Request.Builder()
- .url(url)
- .post(requestBody)
- .build();
- Response response = null;
- try {
- //4,发送post请求
- response = okHttpClient.newCall(request).execute();
- //判断此请求是否成功
- if(response.isSuccessful()){
- //5,在post请求发送成功后,服务端返回的内容,
- Log.i(TAG, "服务器返回的数据"+response.body().string());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
复制代码通过以上代码可以看出okHttp的使用步骤:
1,创建一个OkHttpClient对象
2,构建请求体3,构建一个请求对象4,发送请求
5,在post请求发送成功后,服务端返回的内容
POST请求提交JSON数据:
- //1,申明给服务端传递一个json串
- String jsonString="{'name':'tom','password':'xxx'}";
- //2,创建一个OkHttpClient对象
- OkHttpClient okHttpClient = new OkHttpClient();
- //3,创建一个RequestBody(参数1:数据类型 参数2: json数据)
- RequestBody requestBody = RequestBody.create(JSON, json);
- //4,创建一个请求对象
- Request request = new Request.Builder()
- .url(url)
- .post(requestBody)
- .build();
- //5,发送请求获取响应对象
- try {
- Response response = okHttpClient.newCall(request).execute();
- //6,判断此请求是否成功
- if(response.isSuccessful()){
- //7,在post请求发送成功后,服务端返回的内容
- Log.i(TAG, "服务器返回的数据"+response.body().string());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |