OKhttp框架--01

###1、简介

1、OKHttp是Square公司推出的一款高效的HTTP客户端,支持同一个地址的连接共享同一个Socket、GZIP压缩、请求缓存等等

2、OkHttp内部依赖Okio,Okio已经被谷歌使用在了android源码上,相当强大

3、android-async-http内部使用HttpClient,但是android6.0版本中已经删除了HttpClient的API,所以android-async-http已经过时。

###2、OKHttp主要功能

1、请求文本数据
2、大文件上传
3、大文件下载
4、请求图片

###3、使用方法

####3.1 导入OkHttp:
compile ‘com.squareup.okhttp3:okhttp:3.6.0’

####3.2 get请求:

		// 作为全局实例保存,在app的各处,使用这一个对象就可以了
		// 这样所有的请求可以共用response缓存和线程池
		 //1、创建OkHttpClient客户端对象
        final OkHttpClient okHttpClient = new OkHttpClient();

        //2、创建Request对象,封装请求参数
        Request request = new Request.Builder().url(urlPath).build();

        //3、将请求封装成了任务
        Call call = okHttpClient.newCall(request);
        
        //4、将任务加入调度队列
        call.enqueue(new Callback()
        {
            @Override
            public void onFailure(Call call, IOException e)
            {
            }

            //onResponse方法不在UI线程,所以需要handler来更新UI
            @Override
            public void onResponse(Call call, Response response) throws IOException
            {
                if (response.isSuccessful())
                {
                    //使用handler发送消息来更新UI
                    String result = response.body().string();
                    Message msg = handler.obtainMessage();
                    msg.obj = result;
                    handler.sendMessage(msg);

                }
            }
        });

	/*
	Call(任务)有两个方法:
	    execute():
	        立即执行请求,阻塞直到响应可以被处理。
	    enqueue():
	        以异步的方式去执行请求,将call加入调度队列,等待任务执行完成,任务完成后可在  Callbacl中的onResponse方法中得到结果。
     */

####3.3 post请求:

		 //1、创建OkHttpClient客户端对象
        OkHttpClient okHttpClient = new OkHttpClient();
        
        //2、创建请求体对象,数据类型为json
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        RequestBody requestBody = RequestBody.create(mediaType, "");
        
        //3、创建Request对象,封装请求参数
        Request request = new Request.Builder().post(requestBody).url(urlPath).build();

        //4、将任务加入调度队列
        okHttpClient.newCall(request).enqueue(new Callback()
        {
            @Override
            public void onFailure(Call call, IOException e)
            {
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException
            {
                if (response.isSuccessful())
                {
                    String result = response.body().string();
                    Message msg = handler.obtainMessage();
                    msg.obj = result;
                    handler.sendMessage(msg);

                }
            }
        });

###3、OkHttp封装

https://github.com/hongyangAndroid/okhttputils

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值