okhttp

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

            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值