2017-02-22 38 views
0

Я использую retrofit 2.0 для отправки данных в виде запроса на сообщение с классом pojo и возвращающей строки в качестве ответа либо сбой, либо успех, и теперь проблема в том, что он говорит, что json не может быть потребляются.Android Retrofit 2.0 JSON документ не был полностью поглощен

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 
compile 'com.google.code.gson:gson:2.6.1' 
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 
compile 'com.squareup.okhttp:okhttp:2.4.0 

Теперь я пытаюсь опубликовать jsonobect, как показано ниже. Мой класс POJO как ниже

public class RecruiterProfileModel implements Serializable 
    { 
     @SerializedName("fname") 
     private String firstname; 
     @SerializedName("lname") 
     private String lastname; 
     @SerializedName("company") 
     private String companyName; 
     @SerializedName("address") 
     private String address; 
     @SerializedName("email") 
     private String email; 
     @SerializedName("paswd") 
     private String password; 
     @SerializedName("ph") 
     private String phone; 
     @SerializedName("location") 
     private String location; 
     @SerializedName("city") 
     private String city; 
     @SerializedName("state") 
     private String state; 
     @SerializedName("contry") 
     private String contry; 
     @SerializedName("pincode") 
     private String pincode; 
     @SerializedName("landmark") 
     private String landmark; 

     public RecruiterProfileModel(String fname, String lastname, String landmark, String location, 
            String city, String state, String contry, String pincode, 
            String email, String password, String phone, 
            String address,String companyName) 
     { 
      this.firstname=fname; 
      this.lastname=lastname; 
      this.landmark=landmark; 
      this.location=location; 
      this.city=city; 
      this.state=state; 
      this.contry=contry; 
      this.pincode=pincode; 
      this.email=email; 
      this.password=password; 
      this.phone=phone; 
      this.address=address; 
      this.companyName=companyName; 
     } 

     public String getFirstname() { 
      return firstname; 
     } 

     public void setFirstname(String firstname) { 
      this.firstname = firstname; 
     } 

     public String getLastname() { 
      return lastname; 
     } 

     public void setLastname(String lastname) { 
      this.lastname = lastname; 
     } 

     public String getCompanyName() { 
      return companyName; 
     } 

     public void setCompanyName(String companyName) { 
      this.companyName = companyName; 
     } 

     public String getAddress() { 
      return address; 
     } 

     public void setAddress(String address) { 
      this.address = address; 
     } 

     public String getEmail() { 
      return email; 
     } 

     public void setEmail(String email) { 
      this.email = email; 
     } 

     public String getPassword() { 
      return password; 
     } 

     public void setPassword(String password) { 
      this.password = password; 
     } 

     public String getPhone() { 
      return phone; 
     } 

     public void setPhone(String phone) { 
      this.phone = phone; 
     } 

     public String getLocation() { 
      return location; 
     } 

     public void setLocation(String location) { 
      this.location = location; 
     } 

     public String getCity() { 
      return city; 
     } 

     public void setCity(String city) { 
      this.city = city; 
     } 

     public String getState() { 
      return state; 
     } 

     public void setState(String state) { 
      this.state = state; 
     } 

     public String getContry() { 
      return contry; 
     } 

     public void setContry(String contry) { 
      this.contry = contry; 
     } 

     public String getPincode() { 
      return pincode; 
     } 

     public void setPincode(String pincode) { 
      this.pincode = pincode; 
     } 

     public String getLandmark() { 
      return landmark; 
     } 

     public void setLandmark(String landmark) { 
      this.landmark = landmark; 
     } 
    } 

Мой интерфейс использует Pojo модель в качестве параметра тела и возвращает строку ответа успех или неудачу

@POST("empowerapp/providersreg.php") 
    Call<String> registerRecruiter(
      @Body RecruiterProfileModel profileModel); 

Мой метод запроса пост

 public void registerRecruiter(RecruiterProfileModel profileModel) { 
      Gson gson = new GsonBuilder().setLenient().create(); 

      OkHttpClient client = new OkHttpClient(); 

      Retrofit retrofit = new Retrofit.Builder().baseUrl(Allconstants.MAIN_URL).client(client).addConverterFactory(GsonConverterFactory.create(gson)).build(); 

      RetrofitInterface service = retrofit.create(RetrofitInterface.class); 

      Call<String> call = service.registerRecruiter(profileModel); 
      call.enqueue(new Callback<String>() { 
       @Override 
       public void onResponse(Response<String> response, Retrofit retrofit) { 
        System.out.println("###coming"+response.body().toString()); 
        if (response.body().toString().equalsIgnoreCase("success")) 
        { 
         pd.dismiss(); 
         loginSession.createLoginSession(Allconstants.RECRUITER,Allconstants.R_REG_ACTIVITY); 
         Toast.makeText(Registration.this,"successfully registered",Toast.LENGTH_LONG).show(); 
         System.out.println("###coming"+response.body().toString()); 
        }else{ 
         pd.dismiss(); 
         Toast.makeText(Registration.this,"oops!!!something went wrong..try again",Toast.LENGTH_LONG).show(); 
        } 
       } 

       @Override 
       public void onFailure(Throwable t) { 
        pd.dismiss(); 
        Toast.makeText(Registration.this,t.getStackTrace().toString(),Toast.LENGTH_LONG).show(); 
        System.out.println("###error1"+t.getMessage()); 
       } 
      }); 
     } 

проблема в том, что он говорит, что json нельзя использовать. Пожалуйста, помогите мне в решении этой проблемы. Ваша помощь будет высоко оценена. Заранее спасибо

+0

Можете ли вы опубликовать конкретную ошибку вы получаете. –

+0

Если нет okhttp и gson, он выдает ошибку как -com.google.gson.stream.MalformedJsonException: используйте JsonReader.setLenient (true), чтобы принять неверный JSON в строке 1 столбца 18 путь $ , но при использовании okhttp и gson тогда он говорит, что документ json не был полностью поглощен –

+0

, пожалуйста, помогите мне в решении этой проблемы. Впустую весь мой день –

ответ

0

попытаться добавить .addConverterFactory(ScalarsConverterFactory.create()) при создании Retrofit объекта.

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(Allconstants.MAIN_URL) 
     .client(client) 
     .addConverterFactory(ScalarsConverterFactory.create()) 
     .build(); 

Вам также необходимо добавить следующие строки в build.gradle (используя версию дооснащения вы указали, использовали)

compile "com.squareup.retrofit2:converter-scalars:2.0.0-beta2" 
+0

эта версия не работает -> compile "com.squareup.retrofit: converter-scalars: 2.0.0-beta2" –

+0

, возможно, недоступен в этой версии .... Я использую 'compile" com.squareup.retrofit2: converter-scalars: 2.1.0 "здесь. Можете ли вы, возможно, обновить свои зависимости там, чтобы использовать 2.1 версию –

+0

, что должно быть передано в клиенте? –