OkHttp简易使用教程

介绍

简介

OkHttp 库的设计和实现的首要目标是高效。这也是选择 OkHttp 的重要理由之一。OkHttp 提供了对最新的 HTTP 协议版本 HTTP/2 和 SPDY 的支持,这使得对同一个主机发出的所有请求都可以共享相同的套接字连接。如果 HTTP/2 和 SPDY 不可用,OkHttp 会使用连接池来复用连接以提高效率。OkHttp 提供了对 GZIP 的默认支持来降低传输内容的大小。OkHttp 也提供了对 HTTP 响应的缓存机制,可以避免不必要的网络请求。当网络出现问题时,OkHttp 会自动重试一个主机的多个 IP 地址。

优势

  • 允许连接到同一个主机地址的所有请求,提高请求效率
  • 共享Socket,减少对服务器的请求次数
  • 通过连接池,减少了请求延迟
  • 缓存响应数据来减少重复的网络请求
  • 减少了对数据流量的消耗
  • 自动处理GZip压缩

功能

  • get,post请求
  • 文件的上传下载
  • 加载图片(内部会图片大小自动压缩)
  • 支持请求回调,直接返回对象、对象集合
  • 支持session的保持

引入包

gradle

// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
compile group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.6.0'

maven

<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.6.0</version>
</dependency>

原生API使用

package com.kingboy.test;

import okhttp3.*;
import org.junit.Test;

import java.io.IOException;

/**
 * @Author kingboy
 * @Date 2017/4/14 09:45
 * @Description OkHttpTest is used to http
 */
public class OkHttpTest {


    /**
     * POST方式:测试网易云音乐歌曲搜索接口
     * @throws IOException
     */
    @Test
    public void httpPostTest() throws IOException {

        /**
         * 准备好请求体
         */
        FormBody formBody = new FormBody.Builder()
                .add("s","hello")
                .add("offset","5")
                .add("limit","10")
                .add("type","1")
                .build();
        /**
         * 准备好访问的url和方式
         */
        Request request = new Request.Builder()
                .url("http://music.163.com/api/search/pc")
                .post(formBody)
                .build();

        //构造访问实例
        OkHttpClient httpClient = new OkHttpClient();
        /**
         * 执行访问
         */
        Response execute = httpClient.newCall(request).execute();
        if(execute.isSuccessful()){
            ResponseBody body = execute.body();
            String string = body.string();
            System.out.println(string);
        }else{
            throw new IOException("访问失败!");
        }

    }

    /**
     * GET方式:测试百度首页
     * @throws IOException
     */
    @Test
    public void httpGetTest() throws IOException {


        /**
         * 准备好访问的url和方式
         */
        Request request = new Request.Builder()
                .url("http://www.baidu.com")
                .get()
                .build();

        //构造访问实例
        OkHttpClient httpClient = new OkHttpClient();
        /**
         * 执行访问
         */
        Response execute = httpClient.newCall(request).execute();
        if(execute.isSuccessful()){
            ResponseBody body = execute.body();
            String string = body.string();
            System.out.println(string);
        }else{
            throw new IOException("访问失败!");
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值