怎么对单个请求不执行json转换,返回string自己手动转换
Closed this issue · 1 comments
hiliving commented
https://movie.douban.com/j/chart/top_list?type=13&interval_id=100%3A90&start=0&limit=1
这个接口返回的是个数组,默认情况下被框架自动转换后返回,但是这样返回的只有第一个元素,因为这个接口的响应结构不是标准的 {"data":xxx}形式,所以,如果我想手动进行转换,该怎么操作呢。
lygttpod commented
不请阅读说明文档:不是标准的data code message就使用CommonObserver或者StringObserver即可
2.1、使用CommonObserver请求示例
a、 数据结构
{
"code": 0,
"msg": "success",
"username":"Allen",
"job":"Android",
...
}
备注:TestBean为以上数据结构的模型
b、 @GET("api/test")
Observable<TestBean> getTestData();
c、 RxHttpUtils
.createApi(ApiService.class)
.getTestData()
.compose(Transformer.<TestBean>switchSchedulers())
.subscribe(new CommonObserver<TestBean>() {
@Override
protected void onError(String errorMsg) {
//错误处理
}
@Override
protected void onSuccess(TestBean bookBean) {
//业务处理
}
});
2.2、使用DataObserver请求示例
a、 数据结构
{
"code":0,
"msg":"success",
"data":{
"username":"Allen",
"job":"Android Dev"
...
}
}
备注:TestBean为data中的数据模型
b、 @GET("api/test")
Observable<BaseData<TestBean>> geTestData();
c、
RxHttpUtils.createApi(ApiServer.class)
.geTestData()
.compose(Transformer.<BaseData<TestBean>>switchSchedulers())
.subscribe(new DataObserver<TestBean>() {
@Override
protected void onError(String errorMsg) {
}
@Override
protected void onSuccess(TestBean data) {
}
});
2.3、使用StringObserver请求示例
a、 @GET("api/test")
Observable<String> geTestData();
b、
RxHttpUtils.createApi(ApiServer.class)
.geTestData()
.compose(Transformer.<String>switchSchedulers())
.subscribe(new StringObserver<String>() {
@Override
protected void onError(String errorMsg) {
}
@Override
protected void onSuccess(String data) {
}
});