okhttp

来源:互联网 发布:累计参与人数js效果 编辑:程序博客网 时间:2024/04/27 21:55
okhttp
SPDP协议是谷歌提出基于传输控制协议TCP的应用层协议,通过压缩,多路复用和优先级来缩短加载时间。更加快速,使用GZIP压缩减少传输的数据量,缓存响应避免重复的网络请求,拦截器。。。

优点:快 秒加载
缺点:第一缺点是消息回来需要切换主线程,主线程要自己去写,第二传入调用比较复杂

 

// okhttp实现HttpPost 网络访问
//square 公司出的Http请求库;
//android 原始类 HttpUrlconnection和httpClient;

//高级用法
// 基于Http Post的文件上传(类似表单)
// 多文件和多参数同时上传
MultipartBuilder表单传入
// 大文件下载和下载进度回调
// 大文件上传和上传进度回调
// 支持session的保持
// 支持自签名网站https的访问,提供方法设置下证书就行
// 支持根据Tag取消请求


// okhttp实现HttpGet 网络访问
1.实例化:OkHttpClient;
2.获取对象 Request (Request 是okhttp中访问请求builder是一个辅助类);
3.获取对象Response ,获取call对象调用execute;
4.//获取Responsedbody对象。通过//获取Responsed对象body方法获取数据;
5.从Responsedbody对象中获取服务器返回的数据
// okhttp实现HttpPost 网络访问(json,键值对)
1.builder放入键值对
2.获取requestbody对象
3.获取request对象,将reqbodybody放入它
4.获取response对象
5.获取responsebody对象
6从response中获取服务器返回数据


OkHttp的execute的方法是同步方法,
OkHttp的enqueue的方法是异步方法,
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.google.code.gson:gson:2.8.2'

package com.bawei.test.okhttp_demo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;import okhttp3.Call;import utils.GsonObjectCallback;import utils.NetWorkUtils;import utils.OkHttp3Utils;public class MainActivity extends AppCompatActivity {    private TextView tv;    String path="http://api.tianapi.com/social/?key=71e58b5b2f930eaf1f937407acde08fe&num=20";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.tv);        boolean netWorkAvailable = NetWorkUtils.isNetWorkAvailable(this);        if (!netWorkAvailable) {            Toast.makeText(MainActivity.this, "联网:" + netWorkAvailable, Toast.LENGTH_SHORT).show();        }        getData();    }    private void getData() {        OkHttp3Utils.getInstance().doGet(path,new GsonObjectCallback<NetBean>(){            @Override            public void onUi(NetBean netBean) {                tv.setText(netBean.getNewslist().get(0).getTitle());            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}
原创粉丝点击