Api接口
@FormUrlEncoded
@POST("register.php")
Observable<String> registerUser(@Field("email") String email, @Field("password") String password);
在我的MVP演示者中
onCreate{
Observable<String> registerUserObservable=
apiInterface.registerUser("test@gmail.com", "1234");
registerUserObservable.subscribeOn("schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::handleResult, this::handleError);
}
//methods
private void handleResult(String response){
Log.d(TAG, response);
}
private void handleError(Throwable throwable){
Log.d(TAG, throwable.getMessage());
}
这些是我的改造和rxjava代码,我想发布电子邮件和密码来注册用户。服务器应该在成功时返回一个字符串,在失败时也返回一个字符串。
Gson gson = new GsonBuilder()
.setLenient()
.create();
retrofit = new retrofit2.Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
我添加了gson setLenient代码部分,因为它给了我
如果没有Use JsonReader.setLenient(true) to accept malformed JSON at line 2 column 1 path $
错误。添加此错误后,我收到JSON document was not fully consumed.
错误,但不知道如何解决。这是因为服务器返回的响应是字符串吗?
谢谢。
答案 0 :(得分:0)
如果服务器发送的是普通字符串响应而不是JSON字符串,则需要使用另一个将字符串读入String
的转换器。幸运的是,正式有Scalars converter。
一个Converter,它支持将字符串和基元及其装箱的类型都转换为文本/纯文本主体。