jossiwolf
jossiwolf

Reputation: 2165

Add post parameters in loop - OkHTTP

I'm using OkHTTP for making a post request to my server. I know I can build a request like this:

RequestBody formBody = new FormEncodingBuilder()
            .add("param1", param1)
            .build();
    Request request = new Request.Builder()
            .url(url)
            .post(formBody)
            .build();

So what I want to do is to add the parameters dynamically. E.g:

RequestBody formBody = new FormEncodingBuilder()
    for (ParamsArray m : requestParams) {
        formBody.add("param1", requestParams.value);
    }

But there's no function add for a RequestBody and I don't know if it is possible to convert a FormEncodingBuilder to a RequestBody.

Thank you!

Upvotes: 2

Views: 1360

Answers (4)

TapulaRasa
TapulaRasa

Reputation: 505

Instead of FormEncodingBuilder

use

Builder paramBuilder = new FormBody.Builder();
paramBuilder.add("param1","value1");
paramBuilder.add("param2","value2");
RequestBody requestBody = paramBuilder.build();

Upvotes: 0

Daniel Wilson
Daniel Wilson

Reputation: 19824

As of 3.0.0, the FormEncodingBuilder is gone:

Form and Multipart bodies are now modeled. We've replaced the opaque FormEncodingBuilder with the more powerful FormBody and FormBody.Builder combo. Similarly we've upgraded MultipartBuilder into MultipartBody, MultipartBody.Part, and MultipartBody.Builder.

So replace with FormBody.Builder for these versions.

Upvotes: 3

ligi
ligi

Reputation: 39519

try this

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

Upvotes: 2

daentech
daentech

Reputation: 1115

A FormEncodingBuilder will turn into a RequestBody when you build it. Looking at the documentation, something like this ought to work.

FormEncodingBuilder formBodyBuilder = new FormEncodingBuilder()
for (ParamsArray m : requestParams) {
    formBodyBuilder.add("param1", requestParams.value);
}
RequestBody body = formBodyBuilder.build()

The documentation is available here: https://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/FormEncodingBuilder.html

Upvotes: 4

Related Questions