欢迎光临
专注android技术,聚焦行业精粹,我们一直在努力

如何使用OkHttp来post数据(翻译)

如何使用Okhttp来post数据

本教程将介绍如何使用OkHttp来post,这是一个用于Android和Java应用程序的HTTP和HTTP / 2客户端。 我们将介绍一些常用的用例和示例,例如如何发布字符串,如何发布表单,如何发布文件流等等。

1、准备

我们将在教程中使用OkHttp,所有OkHttp的post示例都是基于3.5.0版本的,我们需要的唯一Maven依赖项是:

maven:

gradle:

okhttp官方网址:https://square.github.io/okhttp/

一个post的内容格式示例:

 

2、Okhttp 来 post String 字符串

让我们看一个下面的例子,我们将使用OkHttpClient发布一个带OkHttp的字符串。

在该示例中,在创建client实例后,我们通过向构建器提供远程服务器的URL,HTTP Post方法和请求body来创建一个request请求。 请注意我们如何通过提供要发布的文本及其媒体类型来创建请求正文。

由于整个请求body同时在内存中,我们应该避免使用此API发布大型(大于1 MiB)的数据。

3、Post 字节数组

使用OkHttp发布一个字节数组很容易。 以下是我们将字节数组发布到RESTful Web服务的示例。

4、Post 表单

OkHttp允许我们使用FormBody.Builder发布表单参数,以构建一个像HTML <form>标签一样效果的请求body主体。 名称和值将使用HTML兼容的格式URL encoding编码进行编码。 让我们看一个示例,我们将使用OkHttpClient使用OkHttp发布表单参数。

在示例中,我们刚刚使用FormBody.builder创建了一个包含3个字段的表单:email,firstname,lastname,然后将表单发布到远程URL。

5、Post 一个文件

使用OkHttp发布文件非常简单。 我们可以使用RequestBody类来创建传输文件内容的请求body主体。 让我们看看下面的例子,我们将使用OkHttpClient post一个文件:

在上面的示例中,我们已将Lorem Ipsum.txt文件post到RESTful Web服务。

6、Post 一个stream 流

使用OkHttp,我们可以将body请求主体作为流发布。 该请求正文的内容正在编写时生成。 让我们看一个我们将流发布到REST API的示例。

在该示例中,我们通过创建新的RequestBody并覆写writeTo方法来发布流,在该方法中,我们逐行读取文件Lorem Ipsum.txt并将其流式传输到请求的缓冲接收器中。

7、Post 一个 Multipart 请求

我们可以使用MultipartBody.Builder类来构建与HML文件上传表单兼容的body请求主体。 我们可以利用此功能通过OkHttp上传文件和图像。 让我们看一个示例,我们将一个multipart请求发布到RESTful Web服务。

在该示例中,我们创建了MultipartBody类的实例,该实例是符合RFC 2387的请求。 然后我们将一个文件部分和一个描述部分添加到请求体,最后我们执行请求将表单post到RESTful Web服务。

更多content-type和header设置可以参考这里:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type

 

赞(0) 打赏
未经允许不得转载:花花鞋 » 如何使用OkHttp来post数据(翻译)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

国内精品Android技术社区

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏