在循环中添加post参数 - OkHTTP

时间:2016-01-08 18:28:21

标签: android okhttp android-networking

我正在使用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

谢谢!

4 个答案:

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