Android Retrofit: content type as application/x-www-form-urlencoded

AndroidPostRetrofit

Android Problem Overview


Fairly new to android development. I am trying to use retrofit to send a post request. In my retrofit logs, I am seeing

Content-Type: text/plain; charset=utf-8

I found that requests will only work if I use the content type:

application/x-www-form-urlencoded

I have searched the googles and have found no clear way to explicitly set the content type. Anyone know how to do it?

Android Solutions


Solution 1 - Android

In the class where you define your service, modify the related method to follow the pattern below:

@FormUrlEncoded
@POST/GET/PUT/DELETE("/your_endpoint")
Object yourMethodName(@Field("your_field") String yourField,...);

Solution 2 - Android

In retrofit 2 is a little bit different:

@FormUrlEncoded
@POST/GET/PUT/DELETE("/your_endpoint")
Call<Task> createTask (@Field("your_field") String title); 

Solution 3 - Android

You have to add the request header like this :

@Headers("Content-Type: application/x-www-form-urlencoded")

in the interface which has the method declarations.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkinezuView Question on Stackoverflow
Solution 1 - Androidk3v1n4ud3View Answer on Stackoverflow
Solution 2 - AndroidGiannis PapadopoulosView Answer on Stackoverflow
Solution 3 - AndroidDawView Answer on Stackoverflow