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) { } }); } }