OkHttp简单使用

OkHttp

Okhttp介绍

OkHttp是一款十分好用的Android网络框架,尽管官方提供了UrlConnection,但是OkHttp依然是最为广泛使用的网络请求方式。如果有一定程度的英语阅读能力,建议直接去官网阅读官方文档。前往Okhttp官网
作为一款优秀的网络框架,Okhttp有以下特性:

  1. 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接
  2. 连接池减少请求延时
  3. 透明的GZIP压缩减少响应数据的大小
  4. 缓存响应内容,避免一些完全重复的请求
    OkHttp支持任何Android 2.3以上平台,并且需要JDK 1.7以上。

OkHttp的使用

由于OkHttp是第三方框架,所以在使用前需要在gradle下添加依赖

implementation "com.squareup.okhttp3:okhttp:4.9.0"

OkHttp Get Url

Get是在开发中最常用的网络请求之一。

//新建一个OkHttpClient对象
OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {
//创建一个request对象
  Request request = new Request.Builder()
      .url(url)
      .get()
      .build();
//获取响应并把响应体返回
  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

通过以上代码,就成功的发送了一个Get请求,并获取了响应。在这里返回了string类型,但是也可以返回二进制数组和inputstream(可以获取inputstream说明OkHttp支持大文件的传输)

OKHttp POST

POST也是常用的网络请求之一,用法与GET十分相似,只是多了RequestBody对象来携带需要传输的数据罢了。

public static final MediaType JSON
    = MediaType.get("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(JSON, json);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

至此,简单的OkHttp的简单应用已经介绍完了,OKHttp的使用就是如此简单。

Okhttp文件上传

File file = new File(Environment.getExternalStorageDirectory(), "FILE_NAME");

RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);

RequestBody requestBody = new MultipartBuilder()
     .type(MultipartBuilder.FORM)
     .addPart(Headers.of(
          "Content-Disposition", 
              "form-data; name=\"username\""), 
          RequestBody.create(null, "hyb"))
     .addPart(Headers.of(
         "Content-Disposition", 
         "form-data; name=\"mFile\", filename=\"hyb.mp4\""), fileBody)
     .build();

Request request = new Request.Builder()
    .url("http://192.168.1.103:8080/okHttpServer/fileUpload")
    .post(requestBody)
    .build();

Call call = mOkHttpClient.newCall(request);
call.enqueue(new Callback()
{
    //...
});

参考了鸿洋大神的博客。

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值