要使用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");
答案 0 :(得分:0)
当然可以,使用RequestBuilder
Request request = new Request.Builder()
.url(url)
.post(body) // here you put your body
.build();
但是URL编码和其他相关内容将在您身边。
答案 1 :(得分: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();
答案 2 :(得分:0)
您可以这样做:
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();