Android 使用改型和rxjava2时会显示JSON文档未完全使用的异常
我正在使用改型和rxjava2将数据保存在数据库中。成功添加数据后,它显示以下异常: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
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”}