Sending JSON in POST request with Retrofit2 Sending JSON in POST request with Retrofit2 json json

Sending JSON in POST request with Retrofit2


Use these in gradle

compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'compile 'com.squareup.retrofit2:converter-scalars:2.3.0'

Use these two POJO class ........

LoginData.class

public class LoginData {    private String email;    private String password;    public LoginData(String email, String password) {        this.email = email;        this.password = password;    }    /**     *     * @return     * The email     */    public String getEmail() {        return email;    }    /**     *     * @param email     * The email     */    public void setEmail(String email) {        this.email = email;    }    /**     *     * @return     * The password     */    public String getPassword() {        return password;    }    /**     *     * @param password     * The password     */    public void setPassword(String password) {        this.password = password;    }}

LoginResult.class

public class LoginResult {    private Boolean error;    private String message;    private Integer doctorid;    private Boolean active;    /**     *     * @return     * The error     */    public Boolean getError() {        return error;    }    /**     *     * @param error     * The error     */    public void setError(Boolean error) {        this.error = error;    }    /**     *     * @return     * The message     */    public String getMessage() {        return message;    }    /**     *     * @param message     * The message     */    public void setMessage(String message) {        this.message = message;    }    /**     *     * @return     * The doctorid     */    public Integer getDoctorid() {        return doctorid;    }    /**     *     * @param doctorid     * The doctorid     */    public void setDoctorid(Integer doctorid) {        this.doctorid = doctorid;    }    /**     *     * @return     * The active     */    public Boolean getActive() {        return active;    }    /**     *     * @param active     * The active     */    public void setActive(Boolean active) {        this.active = active;    }}

Use API like this

public interface RetrofitInterface {     @POST("User/DoctorLogin")        Call<LoginResult> getStringScalar(@Body LoginData body);}

use call like this ....

Retrofit retrofit = new Retrofit.Builder()            .baseUrl("Your domain URL here")            .addConverterFactory(ScalarsConverterFactory.create())            .addConverterFactory(GsonConverterFactory.create())            .build();       RetrofitInterface service = retrofit.create(RetrofitInterface .class); Call<LoginResult> call=service.getStringScalar(new LoginData(email,password));    call.enqueue(new Callback<LoginResult>() {                @Override                public void onResponse(Call<LoginResult> call, Response<LoginResult> response) {                //response.body() have your LoginResult fields and methods  (example you have to access error then try like this response.body().getError() )              }                @Override                public void onFailure(Call<LoginResult> call, Throwable t) {           //for getting error in network put here Toast, so get the error on network                 }            });

EDIT:-

put this inside the success() ....

if(response.body().getError()){   Toast.makeText(getBaseContext(),response.body().getMessage(),Toast.LENGTH_SHORT).show();}else {          //response.body() have your LoginResult fields and methods  (example you have to access error then try like this response.body().getError() )                String msg = response.body().getMessage();                int docId = response.body().getDoctorid();                boolean error = response.body().getError();                  boolean activie = response.body().getActive()();   }

Note :- Always use POJO classes , it remove the JSON data parsing in the retrofit .


This way works for me

My web serviceenter image description here

Add this in your gradle

compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'compile 'com.squareup.retrofit2:converter-scalars:2.3.0'

Interface

public interface ApiInterface {    String ENDPOINT = "http://10.157.102.22/rest/";    @Headers("Content-Type: application/json")    @POST("login")    Call<User> getUser(@Body String body);}

Activity

   public class SampleActivity extends AppCompatActivity implements Callback<User> {    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sample);        Retrofit retrofit = new Retrofit.Builder()                .baseUrl(ApiInterface.ENDPOINT)                .addConverterFactory(ScalarsConverterFactory.create())                .addConverterFactory(GsonConverterFactory.create())                .build();        ApiInterface apiInterface = retrofit.create(ApiInterface.class);        // prepare call in Retrofit 2.0        try {            JSONObject paramObject = new JSONObject();            paramObject.put("email", "sample@gmail.com");            paramObject.put("pass", "4384984938943");            Call<User> userCall = apiInterface.getUser(paramObject.toString());            userCall.enqueue(this);        } catch (JSONException e) {            e.printStackTrace();        }    }    @Override    public void onResponse(Call<User> call, Response<User> response) {    }    @Override    public void onFailure(Call<User> call, Throwable t) {    }}


i think you should now create a service generator class and after thatyou should use Call to call your service

PostInterface postInterface = ServiceGenerator.createService(PostInterface.class);Call<responseBody> responseCall =            postInterface.getStringScalar(requestBody);

then you can use this for synchronous request and get the body of response:

responseCall.execute().body();

and for asynchronous :

responseCall.enqueue(Callback);

refer to link provided below for complete walkthrough and how to create ServiceGenerator :

https://futurestud.io/tutorials/retrofit-getting-started-and-android-client