三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

MediaType 到底是什么?(OkHttp 里必懂的知识点)

MediaType 到底是什么?(OkHttp 里必懂的知识点)

简单说:MediaType 就是 HTTP 请求里的「Content-Type」,用来告诉服务器:我传给你的数据是什么格式、什么编码。

它是 OkHttp 里的一个类,全称:okhttp3.MediaType


一、核心作用

你发请求给服务器时,必须告诉对方数据格式,不然服务器无法解析。 比如:

  • 我发的是JSON
  • 我发的是表单
  • 我发的是图片 / 文件
  • 编码是UTF-8

MediaType 就是干这个的。


二、最常用的 3 种 MediaType(背下来就能用)

1. JSON 格式(最常用)

java

运行

MediaType JSON = MediaType.parse("application/json; charset=utf-8");

意思:

  • application/json:数据是 JSON 格式
  • charset=utf-8:编码用 UTF-8

2. 表单格式(登录 / 注册)

java

运行

MediaType FORM = MediaType.parse("application/x-www-form-urlencoded");

一般用在FormBody不需要自己手动传,OkHttp 会自动处理。

3. 文件 / 图片上传

java

运行

MediaType IMAGE = MediaType.parse("image/jpeg"); MediaType FILE = MediaType.parse("application/octet-stream");
  • image/jpeg:jpg 图片
  • application/octet-stream:任意二进制文件(通用)

三、怎么用?(看一眼就懂)

示例:发 JSON 数据必须带 MediaType

java

运行

String json = "{\"username\":\"test\"}"; RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));

这里如果不写对 MediaType,服务器会报错!比如返回:415 不支持的媒体类型、400 参数错误。


四、MediaType 和 Content-Type 关系

你可以理解成:

  • MediaType = OkHttp 里的代码对象
  • Content-Type = HTTP 请求头里的字段名

最终发请求时,OkHttp 会自动把 MediaType 变成:

plaintext

Content-Type: application/json; charset=utf-8

五、超简总结

  1. MediaType = 数据格式说明
  2. 发 JSON 必须用:application/json; charset=utf-8
  3. 发文件用:image/jpegapplication/octet-stream
  4. 写错会导致服务器无法解析、接口报错
← 返回列表