Android 使用改型和rxjava2时会显示JSON文档未完全使用的异常

Android 使用改型和rxjava2时会显示JSON文档未完全使用的异常,android,retrofit2,rx-java2,Android,Retrofit2,Rx Java2,我正在使用改型和rxjava2将数据保存在数据库中。成功添加数据后,它显示以下异常: JSON document was not fully consumed 为什么即使没有错误且我的数据已成功添加到数据库中,也会显示此异常。添加数据后,我希望显示服务器发送的成功消息,但添加数据后,将显示异常消息,而不是成功消息 在postman中显示来自服务器的成功POST请求消息之后,我已经尝试了使用postman的api 下面是我的代码: ApiService.class public interfac

我正在使用改型和rxjava2将数据保存在数据库中。成功添加数据后,它显示以下异常:

JSON document was not fully consumed
为什么即使没有错误且我的数据已成功添加到数据库中,也会显示此异常。添加数据后,我希望显示服务器发送的成功消息,但添加数据后,将显示异常消息,而不是成功消息

在postman中显示来自服务器的成功POST请求消息之后,我已经尝试了使用postman的api

下面是我的代码:

ApiService.class

public interface ApiService {

@POST("saveData")
@FormUrlEncoded
Single<String> saveDataOnServer(@Field("Name") String Name,
                                @Field("Age") String Age);

}
public class RetrofitClient {

private static Retrofit retrofit = null;

private static final String URL = "https://example.com/";

public static Retrofit getInstance(){

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
                                .connectTimeout(10, TimeUnit.SECONDS)
                                .readTimeout(10,TimeUnit.SECONDS)
                                .writeTimeout(10,TimeUnit.SECONDS)
                                .build();

    if(retrofit == null){

        retrofit = new Retrofit.Builder()
                       .baseUrl(URL)
                       .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                       .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
                       .client(okHttpClient)
                       .build();
    }

    return retrofit;
  }

private RetrofitClient(){

  }

}    
public class AddEmploy extends AppCompatActivity {

ActivityAddEmployBinding activityAddEmployBinding;
Repository repo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_employ);

    activityAddEmployBinding = DataBindingUtil.setContentView(this,R.layout.activity_add_employ);

    activityAddEmployBinding.setAddButton(this);

    repo = new Repository(this);

}

public void add(View view){

repo.addEmployee(activityAddEmployBinding.name.getText().toString(),activityAddEmployBinding.age.getText().toString());

   }
 }
public class Repository {

Context context;

public Repository(Context context){

    this.context = context;

}


 public void addEmployee(String str1,String str2){

     Retrofit retrofit = RetrofitClient.getInstance();
     ApiService apiService = retrofit.create(ApiService.class);

     apiService.saveDataOnServer(str1,str2).subscribeOn(Schedulers.io())
                                           .observeOn(AndroidSchedulers.mainThread())
                                           .subscribe(addEmployObserver());
 }

 private SingleObserver<String> addEmployObserver(){

     return new SingleObserver<String>() {
         @Override
         public void onSubscribe(Disposable d) {


         }

         @Override
         public void onSuccess(String s) {

             Toast.makeText(context,s,Toast.LENGTH_SHORT).show();
         }

         @Override
         public void onError(Throwable e) {

             Toast.makeText(context,"Error: "+e.getMessage(),Toast.LENGTH_SHORT).show();

         }
     };
   }
}
Employee.java

public class Employee {

@SerializedName("Name")
@Expose
String Name;

@SerializedName("Age")
@Expose
String Age;

public Employee(){

}

public Employee(String Name,String Age){

    this.Name = Name;
    this.Age = Age;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getAge() {
    return Age;
}

public void setAge(String age) {
    Age = age;
}
}
AddEmploy.class

public interface ApiService {

@POST("saveData")
@FormUrlEncoded
Single<String> saveDataOnServer(@Field("Name") String Name,
                                @Field("Age") String Age);

}
public class RetrofitClient {

private static Retrofit retrofit = null;

private static final String URL = "https://example.com/";

public static Retrofit getInstance(){

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
                                .connectTimeout(10, TimeUnit.SECONDS)
                                .readTimeout(10,TimeUnit.SECONDS)
                                .writeTimeout(10,TimeUnit.SECONDS)
                                .build();

    if(retrofit == null){

        retrofit = new Retrofit.Builder()
                       .baseUrl(URL)
                       .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                       .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
                       .client(okHttpClient)
                       .build();
    }

    return retrofit;
  }

private RetrofitClient(){

  }

}    
public class AddEmploy extends AppCompatActivity {

ActivityAddEmployBinding activityAddEmployBinding;
Repository repo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_employ);

    activityAddEmployBinding = DataBindingUtil.setContentView(this,R.layout.activity_add_employ);

    activityAddEmployBinding.setAddButton(this);

    repo = new Repository(this);

}

public void add(View view){

repo.addEmployee(activityAddEmployBinding.name.getText().toString(),activityAddEmployBinding.age.getText().toString());

   }
 }
public class Repository {

Context context;

public Repository(Context context){

    this.context = context;

}


 public void addEmployee(String str1,String str2){

     Retrofit retrofit = RetrofitClient.getInstance();
     ApiService apiService = retrofit.create(ApiService.class);

     apiService.saveDataOnServer(str1,str2).subscribeOn(Schedulers.io())
                                           .observeOn(AndroidSchedulers.mainThread())
                                           .subscribe(addEmployObserver());
 }

 private SingleObserver<String> addEmployObserver(){

     return new SingleObserver<String>() {
         @Override
         public void onSubscribe(Disposable d) {


         }

         @Override
         public void onSuccess(String s) {

             Toast.makeText(context,s,Toast.LENGTH_SHORT).show();
         }

         @Override
         public void onError(Throwable e) {

             Toast.makeText(context,"Error: "+e.getMessage(),Toast.LENGTH_SHORT).show();

         }
     };
   }
}
Repository.class

public interface ApiService {

@POST("saveData")
@FormUrlEncoded
Single<String> saveDataOnServer(@Field("Name") String Name,
                                @Field("Age") String Age);

}
public class RetrofitClient {

private static Retrofit retrofit = null;

private static final String URL = "https://example.com/";

public static Retrofit getInstance(){

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
                                .connectTimeout(10, TimeUnit.SECONDS)
                                .readTimeout(10,TimeUnit.SECONDS)
                                .writeTimeout(10,TimeUnit.SECONDS)
                                .build();

    if(retrofit == null){

        retrofit = new Retrofit.Builder()
                       .baseUrl(URL)
                       .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                       .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
                       .client(okHttpClient)
                       .build();
    }

    return retrofit;
  }

private RetrofitClient(){

  }

}    
public class AddEmploy extends AppCompatActivity {

ActivityAddEmployBinding activityAddEmployBinding;
Repository repo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_employ);

    activityAddEmployBinding = DataBindingUtil.setContentView(this,R.layout.activity_add_employ);

    activityAddEmployBinding.setAddButton(this);

    repo = new Repository(this);

}

public void add(View view){

repo.addEmployee(activityAddEmployBinding.name.getText().toString(),activityAddEmployBinding.age.getText().toString());

   }
 }
public class Repository {

Context context;

public Repository(Context context){

    this.context = context;

}


 public void addEmployee(String str1,String str2){

     Retrofit retrofit = RetrofitClient.getInstance();
     ApiService apiService = retrofit.create(ApiService.class);

     apiService.saveDataOnServer(str1,str2).subscribeOn(Schedulers.io())
                                           .observeOn(AndroidSchedulers.mainThread())
                                           .subscribe(addEmployObserver());
 }

 private SingleObserver<String> addEmployObserver(){

     return new SingleObserver<String>() {
         @Override
         public void onSubscribe(Disposable d) {


         }

         @Override
         public void onSuccess(String s) {

             Toast.makeText(context,s,Toast.LENGTH_SHORT).show();
         }

         @Override
         public void onError(Throwable e) {

             Toast.makeText(context,"Error: "+e.getMessage(),Toast.LENGTH_SHORT).show();

         }
     };
   }
}
公共类存储库{
语境;
公共存储库(上下文){
this.context=上下文;
}
public void addEmployee(字符串str1、字符串str2){
Refundation-Refundation=RefundationClient.getInstance();
ApiService ApiService=reformation.create(ApiService.class);
apiService.saveDataOnServer(str1,str2).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(addEmployObserver());
}
私有单观察者addEmployObserver(){
返回新的SingleObserver(){
@凌驾
认购的公共无效(一次性d){
}
@凌驾
成功时的公共void(字符串s){
Toast.makeText(上下文,s,Toast.LENGTH_SHORT).show();
}
@凌驾
公共无效申报人(可丢弃的e){
Toast.makeText(上下文,“错误:+e.getMessage(),Toast.LENGTH_SHORT).show();
}
};
}
}
有人请让我知道为什么会出现这个异常。任何帮助都将不胜感激


谢谢

您收到的JSON文档是什么样子的。它看起来像{“Name”:“John”,“Age”:“20”}您收到的JSON文档是什么样子的。它看起来像{“Name”:“John”,“Age”:“20”}