0

Data Post on Database. Its give Result Json Format.

{"response":"exist"}

When get Response using Retrofit Library and json Parsing using GSON .its goes on OnFailure method and its give error.

call.enqueue(new Callback<Register>() {
           @Override
           public void onResponse(Call<Register> call, Response<Register> response) {


               if (response.body().equals("ok")){

                   Toast.makeText(MainActivity.this, "Registration is Successfully", Toast.LENGTH_SHORT).show();

               }else if (response.body().equals("exiest")){

                   Toast.makeText(MainActivity.this, "Already Exiest", Toast.LENGTH_SHORT).show();

               }else if(response.body().equals("error")){

                   Toast.makeText(MainActivity.this, "Registration Error", Toast.LENGTH_SHORT).show();

               }
           }

           @Override
           public void onFailure(Call<Register> call, Throwable t) {

               Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();

           }
       });

Error is :

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

how it Resolved its Please Guide Me.

kanak
  • 1
  • have you added addConverterFactory(GsonConverterFactory.create()) to your retrofit builder – raj Feb 27 '19 at 09:29
  • post your Register model here – Bhoomika Patel Feb 27 '19 at 09:30
  • Gson gson = new GsonBuilder() .setLenient() .create(); retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .build(); – kanak Feb 27 '19 at 10:45
  • @POST("Registration.php") Call registerUser(@Field("fname") String fName, @Field("mname") String mName, @Field("lname") String lName, @Field("mobile_no") String mobile, @Field("email_id") String email); – kanak Feb 27 '19 at 10:59
  • @SerializedName("response") @Expose public String response; public String getResponse() { return response; } public void setResponse(String response) { this.response = response; } – kanak Feb 27 '19 at 11:05

2 Answers2

0

You are parsing your response wrong . and its exist , you are comparing exiest

change your parsing like this

if (response.body().getResponse().equals("ok")){

                   Toast.makeText(MainActivity.this, "Registration is Successfully", Toast.LENGTH_SHORT).show();

               }else if (response.body()..getResponse().equals("exist")){

                   Toast.makeText(MainActivity.this, "Already Exiest", Toast.LENGTH_SHORT).show();

               }else if(response.body().getResponse().equals("error")){

                   Toast.makeText(MainActivity.this, "Registration Error", Toast.LENGTH_SHORT).show();

               }
Tejas Pandya
  • 3,987
  • 1
  • 26
  • 51
0

You are parsing your Data wrong. Retrofit convert response in Register model class as given in Callback, you should read the value from this.

Register register= response.body();
if (register.getResponse().equals("ok")){
   Toast.makeText(MainActivity.this, "Registration is Successfully", Toast.LENGTH_SHORT).show();
 }else if (register.getResponse().equals("exist")){
   Toast.makeText(MainActivity.this, "Already Exist", Toast.LENGTH_SHORT).show();
 }else if(register.getResponse().equals("error")){
    Toast.makeText(MainActivity.this, "Registration Error", Toast.LENGTH_SHORT).show();
 }

Register.java

public class Register {
    @SerializedName("response")
    @Expose
    private String response;
    public String getResponse() {
        return response;
    }
    public void setResponse(String response) {
        this.response = response;
    }
}
Ved
  • 1,035
  • 14
  • 28