Android 无法使用2+;获取响应;RXJava2但是在POSTMAN中获取响应
我正在尝试从服务器获取JSON响应以进行联网,我正在使用Reformation2和Rxjava2从服务器获取数据。下面是来自服务器的JSON响应Android 无法使用2+;获取响应;RXJava2但是在POSTMAN中获取响应,android,retrofit2,rx-java2,Android,Retrofit2,Rx Java2,我正在尝试从服务器获取JSON响应以进行联网,我正在使用Reformation2和Rxjava2从服务器获取数据。下面是来自服务器的JSON响应 { "status": "Success", "panHolderName": "xxxxxx", "dateOfBirth": "xx-xx-xxxx", "gender": "xxx", &
{
"status": "Success",
"panHolderName": "xxxxxx",
"dateOfBirth": "xx-xx-xxxx",
"gender": "xxx",
"residence": null,
"occupation": "xxxx",
"address": "xxxxxxx",
"pincode": "xxxxxx"
}
当我在POSTMAN中使用API时,它正确地获取上述响应,但当我使用RXJAva2和改型获取响应时,它仅显示panHolderName
字段,即使没有显示错误。为什么其他字段数据未显示
下面是我的代码
客户端类
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getInstance(){
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(22, TimeUnit.SECONDS)
.readTimeout(22, TimeUnit.SECONDS)
.writeTimeout(22, TimeUnit.SECONDS)
.build();
if(retrofit == null)
retrofit = new Retrofit.Builder()
.baseUrl("http://68.169.58.46:8080/portal/androidIntegrationAPI/")
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
return retrofit;
}
}
public interface ApiService {
@POST("getPanDetails")
Observable<PanDetails> getDetails(@Body JsonObject jsonObject);
}
public class PanDetails {
@SerializedName("status")
@Expose
String status;
@SerializedName("panHolderName")
@Expose
String panHolderName;
@SerializedName("dateOfBirth")
@Expose
String dateOfBirth;
@SerializedName("gender")
@Expose
String gender;
@SerializedName("residence")
@Expose
String residence;
@SerializedName("occupation")
@Expose
String occupation;
@SerializedName("address")
@Expose
String address;
@SerializedName("pincode")
@Expose
String pincode;
public PanDetails(String status, String panHolderName, String dateOfBirth, String gender, String residence,
String occupation, String address, String pincode) {
this.status = status;
this.panHolderName = panHolderName;
this.dateOfBirth = dateOfBirth;
this.gender = gender;
this.residence = residence;
this.occupation = occupation;
this.address = address;
this.pincode = pincode;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPanHolderName() {
return panHolderName;
}
public void setPanHolderName(String panHolderName) {
this.panHolderName = panHolderName;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getResidence() {
return residence;
}
public void setResidence(String residence) {
this.residence = residence;
}
public String getOccupation() {
return occupation;
}
public void setOccupation(String occupation) {
this.occupation = occupation;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPincode() {
return pincode;
}
public void setPincode(String pincode) {
this.pincode = pincode;
}
}
private void sendPan(String str1){
Retrofit retrofit = RetrofitClient.getInstance();
ApiService apiService = retrofit.create(ApiService.class);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("panNo",str1);
apiService.getDetails(jsonObject).subscribeOn(Schedulers.io())
.subscribe(new Observer<PanDetails>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(PanDetails value) {
prg.dismiss();
name.setText(value.getPanHolderName());
Log.d("name",nam);
mydob.setText(value.getDateOfBirth());
address.setText(value.getAddress());
pin.setText(value.getPincode());
if(value.getGender().equals("Male")){
gender.setSelection(1);
}
else{
gender.setSelection(2);
}
}
@Override
public void onError(final Throwable e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
prg.dismiss();
TastyToast.makeText(getApplicationContext(),e.getMessage(),
TastyToast.LENGTH_LONG,TastyToast.INFO).show();
}
});
}
@Override
public void onComplete() {
}
});
}
ApiService.class
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getInstance(){
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(22, TimeUnit.SECONDS)
.readTimeout(22, TimeUnit.SECONDS)
.writeTimeout(22, TimeUnit.SECONDS)
.build();
if(retrofit == null)
retrofit = new Retrofit.Builder()
.baseUrl("http://68.169.58.46:8080/portal/androidIntegrationAPI/")
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
return retrofit;
}
}
public interface ApiService {
@POST("getPanDetails")
Observable<PanDetails> getDetails(@Body JsonObject jsonObject);
}
public class PanDetails {
@SerializedName("status")
@Expose
String status;
@SerializedName("panHolderName")
@Expose
String panHolderName;
@SerializedName("dateOfBirth")
@Expose
String dateOfBirth;
@SerializedName("gender")
@Expose
String gender;
@SerializedName("residence")
@Expose
String residence;
@SerializedName("occupation")
@Expose
String occupation;
@SerializedName("address")
@Expose
String address;
@SerializedName("pincode")
@Expose
String pincode;
public PanDetails(String status, String panHolderName, String dateOfBirth, String gender, String residence,
String occupation, String address, String pincode) {
this.status = status;
this.panHolderName = panHolderName;
this.dateOfBirth = dateOfBirth;
this.gender = gender;
this.residence = residence;
this.occupation = occupation;
this.address = address;
this.pincode = pincode;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPanHolderName() {
return panHolderName;
}
public void setPanHolderName(String panHolderName) {
this.panHolderName = panHolderName;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getResidence() {
return residence;
}
public void setResidence(String residence) {
this.residence = residence;
}
public String getOccupation() {
return occupation;
}
public void setOccupation(String occupation) {
this.occupation = occupation;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPincode() {
return pincode;
}
public void setPincode(String pincode) {
this.pincode = pincode;
}
}
private void sendPan(String str1){
Retrofit retrofit = RetrofitClient.getInstance();
ApiService apiService = retrofit.create(ApiService.class);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("panNo",str1);
apiService.getDetails(jsonObject).subscribeOn(Schedulers.io())
.subscribe(new Observer<PanDetails>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(PanDetails value) {
prg.dismiss();
name.setText(value.getPanHolderName());
Log.d("name",nam);
mydob.setText(value.getDateOfBirth());
address.setText(value.getAddress());
pin.setText(value.getPincode());
if(value.getGender().equals("Male")){
gender.setSelection(1);
}
else{
gender.setSelection(2);
}
}
@Override
public void onError(final Throwable e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
prg.dismiss();
TastyToast.makeText(getApplicationContext(),e.getMessage(),
TastyToast.LENGTH_LONG,TastyToast.INFO).show();
}
});
}
@Override
public void onComplete() {
}
});
}
PersonalInfo.class
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getInstance(){
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(22, TimeUnit.SECONDS)
.readTimeout(22, TimeUnit.SECONDS)
.writeTimeout(22, TimeUnit.SECONDS)
.build();
if(retrofit == null)
retrofit = new Retrofit.Builder()
.baseUrl("http://68.169.58.46:8080/portal/androidIntegrationAPI/")
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
return retrofit;
}
}
public interface ApiService {
@POST("getPanDetails")
Observable<PanDetails> getDetails(@Body JsonObject jsonObject);
}
public class PanDetails {
@SerializedName("status")
@Expose
String status;
@SerializedName("panHolderName")
@Expose
String panHolderName;
@SerializedName("dateOfBirth")
@Expose
String dateOfBirth;
@SerializedName("gender")
@Expose
String gender;
@SerializedName("residence")
@Expose
String residence;
@SerializedName("occupation")
@Expose
String occupation;
@SerializedName("address")
@Expose
String address;
@SerializedName("pincode")
@Expose
String pincode;
public PanDetails(String status, String panHolderName, String dateOfBirth, String gender, String residence,
String occupation, String address, String pincode) {
this.status = status;
this.panHolderName = panHolderName;
this.dateOfBirth = dateOfBirth;
this.gender = gender;
this.residence = residence;
this.occupation = occupation;
this.address = address;
this.pincode = pincode;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPanHolderName() {
return panHolderName;
}
public void setPanHolderName(String panHolderName) {
this.panHolderName = panHolderName;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getResidence() {
return residence;
}
public void setResidence(String residence) {
this.residence = residence;
}
public String getOccupation() {
return occupation;
}
public void setOccupation(String occupation) {
this.occupation = occupation;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPincode() {
return pincode;
}
public void setPincode(String pincode) {
this.pincode = pincode;
}
}
private void sendPan(String str1){
Retrofit retrofit = RetrofitClient.getInstance();
ApiService apiService = retrofit.create(ApiService.class);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("panNo",str1);
apiService.getDetails(jsonObject).subscribeOn(Schedulers.io())
.subscribe(new Observer<PanDetails>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(PanDetails value) {
prg.dismiss();
name.setText(value.getPanHolderName());
Log.d("name",nam);
mydob.setText(value.getDateOfBirth());
address.setText(value.getAddress());
pin.setText(value.getPincode());
if(value.getGender().equals("Male")){
gender.setSelection(1);
}
else{
gender.setSelection(2);
}
}
@Override
public void onError(final Throwable e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
prg.dismiss();
TastyToast.makeText(getApplicationContext(),e.getMessage(),
TastyToast.LENGTH_LONG,TastyToast.INFO).show();
}
});
}
@Override
public void onComplete() {
}
});
}
private void sendPan(字符串str1){
Refundation-Refundation=RefundationClient.getInstance();
ApiService ApiService=reformation.create(ApiService.class);
JsonObject JsonObject=新的JsonObject();
jsonObject.addProperty(“panNo”,str1);
apiService.getDetails(jsonObject).subscribeOn(Schedulers.io())
.订阅(新观察员){
@凌驾
认购的公共无效(一次性d){
}
@凌驾
public void onNext(PanDetails值){
prg.discouse();
name.setText(value.getPanHolderName());
Log.d(“名称”,不结盟运动);
mydob.setText(value.getDateOfBirth());
address.setText(value.getAddress());
pin.setText(value.getPincode());
if(value.getGender()等于(“男性”)){
性别.选举(1);
}
否则{
性别.选举(2);
}
}
@凌驾
公共作废申报人(最终可丢弃e){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
prg.discouse();
TastyToast.makeText(getApplicationContext(),e.getMessage(),
TastyToast.LENGTH_LONG,TastyToast.INFO).show();
}
});
}
@凌驾
未完成的公共空间(){
}
});
}
有人,请让我知道我做错了什么。任何帮助都将不胜感激
谢谢之后会抛出错误
name.setText(value.getPanHolderName());
这就是它不打印其他值的原因。在设置UI数据时,需要在主线程上进行观察
外接程序build.gradle
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
implementation "io.reactivex.rxjava2:rxjava:2.1.1"
及
这是一个错误
name.setText(value.getPanHolderName());
这就是它不打印其他值的原因。在设置UI数据时,需要在主线程上进行观察
外接程序build.gradle
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
implementation "io.reactivex.rxjava2:rxjava:2.1.1"
及
问题是什么?除了
panHolderName
之外,我无法获取其他字段。请检查类似于postman字符串的字段类型,在您的pojo类中使用int或boolean并进行交叉检查如何检查响应字段的数据类型。当我尝试记录panHolderName
时,其显示如下内容11056-11056/com.app.esfita W/RenderThread:type=1400 audit(0.0:51):avc:denied{write}for name=“property\u service”dev=“tmpfs”ino=255 scontext=u:r:untrusted\u app:s0:c134、c256、c512、c768 tcontext=u:object\u r:property\u socket:s0 tclass=sock\u file permissive=0
有什么问题吗?除了panHolderName
我无法获取其他字段。请检查类似postman字符串中的字段类型,在您的pojo类中使用int或boolean并进行交叉检查如何检查响应字段的数据类型。当我尝试记录panHolderName
时,其显示如下内容11056-11056/com.app.esfita W/RenderThread:type=1400 audit(0.0:51):avc:denied{write}for name=“property\u service”dev=“tmpfs”ino=255 scontext=u:r:untrusted\u app:s0:c134、c256、c512、c768 tcontext=u:object\r:property\u socket:s0 tclass=sock\u file permissive=0