我正在使用OkHTTP向我的服务器发送帖子请求。我知道我可以建立这样的请求:
RequestBody formBody = new FormEncodingBuilder()
.add("param1", param1)
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
所以我想做的是动态添加参数。 E.g:
RequestBody formBody = new FormEncodingBuilder()
for (ParamsArray m : requestParams) {
formBody.add("param1", requestParams.value);
}
但add
没有RequestBody
函数,我不知道是否可以将FormEncodingBuilder
转换为RequestBody
。
谢谢!
答案 0 :(得分:4)
构建它时,FormEncodingBuilder
将变为RequestBody
。看看文档,这样的事情应该有用。
FormEncodingBuilder formBodyBuilder = new FormEncodingBuilder()
for (ParamsArray m : requestParams) {
formBodyBuilder.add("param1", requestParams.value);
}
RequestBody body = formBodyBuilder.build()
文档可在此处获得: https://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/FormEncodingBuilder.html
答案 1 :(得分:3)
从3.0.0开始,FormEncodingBuilder is gone:
现在对表单和多部分主体进行建模。我们已经取代了不透明的 FormEncodingBuilder具有更强大的FormBody和 FormBody.Builder组合。同样,我们已将MultipartBuilder升级为 MultipartBody,MultipartBody.Part和MultipartBody.Builder。
因此,请使用FormBody.Builder替换这些版本。
答案 2 :(得分:2)
试试这个
FormEncodingBuilder formBodyBuilder = new FormEncodingBuilder();
for (ParamsArray m : requestParams) {
formBodyBuilder.add("param1", requestParams.value);
}
RequestBody formBody = formBodyBuilder.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
答案 3 :(得分:0)
而不是FormEncodingBuilder
使用
Builder paramBuilder = new FormBody.Builder();
paramBuilder.add("param1","value1");
paramBuilder.add("param2","value2");
RequestBody requestBody = paramBuilder.build();