I m trying to make a request in which I want to include a Header , a form-urlencoded field and a json body. My Retrofit interface is as follows
@FormUrlEncoded @POST("/api/register") Observable<RegisterResponse> register( @Header("Authorization") String authorization, @Field("grant_type") String grantType, @Body RegisterBody body );
When I make this request I get back exception @Body
parameters cannot be used with form or multi-part encoding.
I have also tried with the @Multipart
annotation:
@Multipart @FormUrlEncoded @POST("/api/register") Observable<RegisterResponse> register( @Header("Authorization") String authorization, @Part("grant_type") TypedString grantType, @Body RegisterBody body );
and I get an IllegalArgumentException
and only one encoding annotation is allowed.
REST APIs provide us a functionality with the help of which we can add data to our database using REST API. For posting this data to our database we have to use the Post method of REST API to post our data. We can post data to our API in different formats.
Annotation Type FormUrlEncodedDenotes that the request body will use form URL encoding. Fields should be declared as parameters and annotated with @Field . Requests made with this annotation will have application/x-www-form-urlencoded MIME type.
maybe this could help some people, if you have this trouble, you should remove @FormUrlEncoded of your interface. Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With