繁体   English   中英

使用OkHttp 3发送原始POST请求

[英]Send raw POST request with OkHttp 3

要使用OkHttp发送POST请求,我已经看到他们使用FormBody.Builder,但这需要我手动输入POST数据的每个名称和值。 有没有一种方法可以使用带有POST数据的单个String创建一个RequestBody? 例如,代替

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

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

...只是做

bodyBuilder.add("name=value&name2=value2");

当然,使用RequestBuilder

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

但是URL编码和其他相关内容将在您身边。

创建一个名为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();

您可以这样做:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM