简单聊聊Okhttp基本用法(二)

哈喽,大家新年好,在上一篇聊了Okhttp基本用法之后,准备再和大家聊聊Okhttp的其他方法。还没有看过我上一篇的同学可以点击链接先看看上一篇文章。

简单聊聊Okhttp基本用法

下面先说说这篇文章的基本大纲

1、请求超时设置

2、自定义Requestbody

3、Okhttp如何设置Header

4、Response


请求超时设置

在Okhttp访问网络时,我们可以通过它提供给我们的方法来设置Okhttp网络请求超时的时间,这样能更加方便的满足我们的需求。

val okHttpClient = OkHttpClient.Builder()

    .connectTimeout(10, TimeUnit.SECONDS)//连接超时

    .readTimeout(10, TimeUnit.SECONDS)//读取超时

    .writeTimeout(10, TimeUnit.SECONDS)//写入超时

    .build()

val request = Request.Builder()

.url("网络地址")

.build()

val call = okHttpClient.newCall(request)

这里可以根据自己的需求进行设置,如果没有设置的话,默认的时间为10秒。


自定义Requestbody

当我们要以流的方式提交请求体的时候,我们就会用到自定义的Requestbody。

val okHttpClient = OkHttpClient()

val requestBody =object : RequestBody() {

override fun contentType(): MediaType? {

return null

    }

override fun writeTo(sink: BufferedSink) {

//以流的方式提交post请求体

        val fileInputStream = FileInputStream("path")

val byte = ByteArray(1024)

while ((fileInputStream.read(byte)) != -1) {

//向服务器写入

            sink.write(byte)

}

}

}

val request = Request.Builder()

.url("网络地址")

.post(requestBody)

.build()

val call  = okHttpClient.newCall(request)


Okhttp如何设置Header

在Okhttp中设置请求头很简单,方法都是现成的

val okHttpClient = OkHttpClient()

val request = Request.Builder()

.url("网络地址")

.header("key1","content1")

.addHeader("key2","content2")

.build()

val call = okHttpClient.newCall(request)

就是这么简单,可以直接设置,包括Cookie也是可以这样设置。


Response

最后我们来简单说说请求返回的Response

response.body()!!.string()//字符串,json等

response.body()!!.bytes()//Btimap等

response.body()!!.byteStream()//IO流,文件等

response.header("key")//获取相应头文件

其中response.body()!!.string()只能调用一次,第二次调用的时候返回值为null。这是因为response.body()!!.string()实质上是输入流获取数据,这是需要服务器有了输出才能获取的。服务器只做了一次输出,所以response.body()!!.string()也只能第一次调用获取数据。因为response.body()!!.string()实质上是输入流,所以也要放在子线程中操作。


关于Okhttp的简单用法到这里就告一段落了,有错误的地方请大家指出来,我们可以多多交流。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言: Android开发中网络开发是一个很重要的模块,基本上所有的APP也都用到了这个模块。从最开始自己实现网络...
    Jevely阅读 1,256评论 0 2
  • 前言 在Android开发中,发送HTTP请求是很常见的。SDK中自带的HttpURLConnection虽然能基...
    Jowney阅读 810评论 0 5
  • 参考:https://blog.csdn.net/fightingxia/article/details/7094...
    文强小弟阅读 1,236评论 0 1
  • 这篇文章说下OkHttp的基本用法,是最新的3哦,如果你曾经在网上搜索OkHttp怎么使用发现有些类没有了可能是因...
    追逐黄昏的太阳阅读 973评论 1 1
  • 6.1 公钥密钥加密原理 6.1.1 基础知识 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算...
    AndroidMaster阅读 4,050评论 1 8