编写天气Demo,接触OKhttp框架,框架没那么难

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">	</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">因为本人都是自学,而且也是边学边用,肯定会有很多不足的地方,这也不是学习的定义吗?从未知的一点点摸索,到最后的大鸟。</span>

概述
HTTP是现代网络应用程序的方式。 这是我们如何与媒体交换数据。 做HTTP有效地使你的东西加载更快,节省带宽。
OkHttp默认是一个有效的HTTP客户端:
HTTP / 2支持允许所有请求相同的主机共享一个套接字。
连接池可以减少请求延迟(如果HTTP / 2不可使用)。
透明的GZIP收缩下载大小。
响应缓存避免了网络完全重复请求。
OkHttp坚守网络时麻烦:它会悄然恢复 常见的连接问题。 如果你的服务有多个IP地址OkHttp意志 如果第一个连接失败尝试备用地址。 这对IPv4 + IPv6是必要的 和冗余数据中心托管的服务。 OkHttp发起新连接 与现代TLS特性(SNI ALPN)和回落至1.0 TLS握手 失败。
使用OkHttp很容易。 它的请求/响应API与流利的建设者和设计 不变性。 它同时支持同步和异步调用阻塞调用 回调。
OkHttp支持安卓2.3及以上。 对于Java,最低要求是1.7。

以上皆是我从官网找来的,作为一个新手我表示看不太懂这么一大堆,不过可以简单的看出有这么几点好处:连接池,节约资源。可以响应缓存避免重复请求,支持同步和异步调用。

接下来接触OKhttp框架

第一步引入JAR包

可以选择从网上下载JAR包导入libs文件,如果是Android studio编辑器可以比较简单在build文件依赖里加上这么一句就可以

compile 'com.squareup.okhttp:okhttp:2.4.0'
第二步用法

不多说,代码是最强的

   private final OkHttpClient client = new OkHttpClient();<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Log.i("tag", "onBind: "+"sdfsdfsdfs");
                            Request request = new Request.Builder().url("http://news-at.zhihu.com/api/4/news/latest").build();
                            Response response = client.newCall(request).execute();
                            if (response.isSuccessful()) {
                                Log.i("tag", "onBind: " + response.code()+"sdfsdfsdfs"+response.body().string());
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();

这是通过GET方式提交,因为联网操作一般都是不能再主线程里操作,所以要单独开一个线程,Request是网络请求,Builder是辅助类,传入URL的网络路径。然后Response接收到传回的响应,OkHttpClient就是服务器,client.newCall(request).execute();就是发出请求,传入的也是Request请求。然后读出response里的内容,比如code状态码,还有body(),传回内容。


这就是传回的效果。这是最简单的同步GET,接下来就是异步。

二话不说上代码

  new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Log.i("tag", "onBind: "+"sdfsdfsdfs");
                            Request request = new Request.Builder().url("http://news-at.zhihu.com/api/4/news/latest") .build();
                             client.newCall(request).enqueue(new com.squareup.okhttp.Callback() {
                                 @Override
                                 public void onFailure(Request request, IOException e) {

                                 }

                                 @Override
                                 public void onResponse(Response response) throws IOException {
                                     Log.i("tag", "onBind: " + response.code()+"sdfsdfsdfs"+response.body().string());
                                 }
                             });

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();

异步与同步的不同就是把你想要做的响应放进去后,你可以先做别的事,到OKhttp上就是你先把你想要做的响应先放入队列里。使用enqueue方法,把请求在回调方法里面执行获得想要的数据。


效果图如上。

接下来就是POST请求,既然是post需要传参数,也非常简单,直接用add就可以。

 new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Log.i("tag", "onBind: " + "sdfsdfsdfs");
                            RequestBody formBody = new FormEncodingBuilder().add("name", "admin").add("password", "admin").build();
                            Request request = new Request.Builder().url("http://news-at.zhihu.com/api/4/news/latest").post(formBody).build();
                            Response response = client.newCall(request).execute();
                            if (response.isSuccessful()) {
                                Log.i("tag", "onBind: " + response.code() + "sdfsdfsdfs" + response.body().string());
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
异步也是把一些地方改成异步那样就可以了,不太复杂。今天就用到这些知识点,所以也就写这些博客,其实OKhttp还有好多功能,比如开头时说到的使用缓存,还有post提交文件,提交图片,提交资源,但是我现在没用到就写到这里吧,知识是学无止境的,怎么写也是写不完的,但是对于小鸟来说,最重要的就是把每天学到的东西及时的留下笔记,学会这些就够了。(PS:其实个人觉得,没必要把所有东西都学会,因为新技术都是时时刻刻都有可能出现的,你现在学的也许下一刻就是过时的技术了,所以只要把现在用到的学会,然后去学更新的技术就好,哈哈我为自己的懒成功的找到理由)。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值