【发布时间】:2017-10-11 22:14:51
【问题描述】:
我将在我的应用程序中使用 rxjava 和改造。我正在处理的事情是:我在我的 POST API 上使用这种 json 格式将数据发送到服务器:
{
"user":{
"email":"0665587777",
"password":"password",
"password_confirmation":"password",
"user_type":"patient"
},
"profile":{
"first_name":"David",
"lastname":"Jackson bil",
"gender":"Male",
"national_id":"22111"
}
}
并获取此json格式以从服务器获取数据:
{
"id": 37,
"email": "0665587777",
"created_at": "2017-05-12T13:11:58.278Z",
"updated_at": "2017-05-12T13:11:58.278Z",
"enabled": false,
"admin": false,
"user_type": "patient",
"googletoken": null
}
为此,我创建了一个名为 register 的对象并像这样实现:
public class register {
@SerializedName("user")
User user=new User();
@SerializedName("profile")
patient patient=new patient();
}
我在我的界面中这样设置 API 调用:
@POST("api/users")
//Call<SOAnswersResponse> getAnswer();
Observable<register> CreateUser(@Body register user);
并像这样实现改造客户端:
public class RetrofitClient {
private static Retrofit retrofit=null;
public static Retrofit getClient(String baseUrl){
if(retrofit==null){
retrofit=new Retrofit.Builder()
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
这就是我在活动中所做的一切:
public class CreateUser extends AppCompatActivity {
private SOService mService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_user);
mService= ApiUtils.getSOService();
loadAnwser();
}
private void loadAnwser() {
Observer<register> myObserver= new Observer<register>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull register register) {
User user=register.getUser();
Log.d("Retroit_Result",user.toString());
}
@Override
public void onError(@NonNull Throwable e) {
Log.d("Retroit_Result","Error"+e.getMessage());
}
@Override
public void onComplete() {
}
};
mService=ApiUtils.getSOService();
User user=new User();
patient patient=new patient();
register reg=new register();
patient.setFirst_name("Hussssein");
patient.setLast_name("Ojaaaghi");
user.setEmail("55662266");
patient.setGender("Male");
patient.setNational_id("123222322");
user.setPassword("password");
user.setPassword_confirmation("password");
user.setUser_type("patient");
reg.setPatient(patient);
reg.setUser(user);
mService.CreateUser(reg)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(myObserver);
}
}
现在的问题是我在 onNext 方法中得到了 null?
【问题讨论】:
标签: android json retrofit rx-java rx-android