使用 OkHttp 3 发送原始 POST 请求

问题描述 投票:0回答:4

要使用 OkHttp 发送 POST 请求,我看到他们使用 FormBody.Builder,但这需要我手动输入 POST 数据的每个名称和值。有没有办法使用带有 POST 数据的单个字符串创建 RequestBody?例如,而不是

FormBody.Builder bodyBuilder = new FormBody.Builder();

bodyBuilder.add("name", "value");
bodyBuilder.add("name2", "value2");

...只是在做

bodyBuilder.add("name=value&name2=value2");
java http okhttp
4个回答
3
投票

你可以这样做:

RequestBody body = RequestBody.create(MediaType.get("application/x-www-form-urlencoded"), "key1=value1&key2=value2");

Request request = new Request.Builder()
.url(url)
.post(body)
.build();

0
投票

当然,使用

RequestBuilder

  Request request = new Request.Builder()
      .url(url)
      .post(body) // here you put your body
      .build();

但是 URL 编码和其他相关的东西会在你这边。


0
投票

创建一个名为 FORM 的 MediaType 变量:

public static final MediaType FORM = MediaType.parse("multipart/form-data");

使用 FORM 变量和未解析的参数(字符串)创建 RequestBody:

RequestBody requestBody = RequestBody.create(FORM, params);

发布完整的 requestBody 变量。

Request request = new Request.Builder()
    .url(url)
    .post(requestBody)
    .build();

0
投票

您也可以使用最新版本简单地执行此操作:

val reqBody = "foo=bar"
val request = Request.Builder().post(reqBody.toRequestBody()).build()
© www.soinside.com 2019 - 2024. All rights reserved.