学习笔记 Tianmao 篇 OkHttp 网络的使用

本文详细介绍了如何使用OkHttp进行网络请求,包括依赖添加、客户端创建、GET与POST请求的具体实现,以及不同类型的响应处理方法。

一.添加okhttp的dependence依赖:

//okhttp
compile 'com.squareup.okhttp:okhttp:2.5.0'
//gson
compile 'io.github.openfeign:feign-gson:9.3.1'

二.OkHttp的操作

1.创建客户端 OkHttpClient

OkHttpClient okHttpClient=new OkHttpClient();

2.使用Get()方式 或 Post()(带参数)方式访问

1>.Get()访问

1.请求对象
Request request = new Request.Builder().url(url).build();

2.响应对象

同步,execute()方法还是在这个线程并没有 开启子线程 所以 如果这代码是在主线程里是会报错的
Response response = okHttpClient.newCall(request).execute();

异步,enqueue()方法开启子线程 
    Response response = okHttpClient.newCall(request).enqueue(new Callback(){
        @Override
        public void onFailure(Request request, IOException e) {

        }

        @Override
        public void onResponse(Response response) throws IOException {

            获取响应response.body()返回ResponseBody类
            enqueue() 开一个子线程进行网络执行部分 
            这里要注意操作到主线程 这样这里就可以写UI操作了 具体下一篇会讲到
        }

});

3.获取响应
response.body()返回ResponseBody类 (注:用了异步就直接可以在onResponse里操作)

response.body().string();     返回String

response.body().byteStream(); 返回 inputStream

response.body().bytes();      返回二进制字节数组

2>.Post() 提交键值对 访问

//键值对 初始化添加各个属性 add(String name, String value)
RequestBody formBody = new FormEncodingBuilder()
.add(“属性名”, “属性值”)
.add(“name”, “bug”)
.build();
1.请求对象
与get的不同点 提交参数post()我们这里提交一个formBody

Request request = new Request.Builder().url(url).post(formBody ).build();

2.响应对象

同步,execute()方法还是在这个线程并没有 开启子线程 所以 如果这代码是在主线程里是会报错的
Response response = okHttpClient.newCall(request).execute();

异步,enqueue()方法开启子线程 
    Response response = okHttpClient.newCall(request).enqueue(new Callback(){
        @Override
        public void onFailure(Request request, IOException e) {

        }

        @Override
        public void onResponse(Response response) throws IOException {

            获取响应response.body()返回ResponseBody类
            enqueue() 开一个子线程进行网络执行部分 
            我们可以在自定义callback类继承Callback 实现onResponse操作到主线程 这样这里就可以写UI操作了具体下一篇会讲到
        }

});

3.获取响应
response.body()返回ResponseBody类 (注:用了异步就直接可以在onResponse里操作)

response.body().string();     返回String

response.body().byteStream(); 返回 inputStream

response.body().bytes();      返回二进制字节数组

3>.Post() 提交 参数为Josn 访问

//json 定义
public static final MediaType JSON = MediaType.parse(“application/json; charset=utf-8”);
1.请求对象
与get的不同点 提交参数post()我们这里提交一个json
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder().url(url).post(body).build();

2.响应对象

同步,execute()方法还是在这个线程并没有 开启子线程 所以 如果这代码是在主线程里是会报错的
Response response = okHttpClient.newCall(request).execute();

异步,enqueue()方法开启子线程 
    Response response = okHttpClient.newCall(request).enqueue(new Callback(){
        @Override
        public void onFailure(Request request, IOException e) {

        }

        @Override
        public void onResponse(Response response) throws IOException {

            获取响应response.body()返回ResponseBody类
            enqueue() 开一个子线程进行网络执行部分 
            我们可以在自定义callback类继承Callback 实现onResponse操作到主线程 这样这里就可以写UI操作了具体下一篇会讲到
        }

});

3.获取响应
response.body()返回ResponseBody类 (注:用了异步就直接可以在onResponse里操作)

response.body().string();     返回String

response.body().byteStream(); 返回 inputStream

response.body().bytes();      返回二进制字节数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值