android - Retrofit Rxjava 在返回 String(不是Java bean)时没有走 rx 回调?
问题描述
当 是Javabean 时就能得到回调.之前提问匆忙没有贴代码,好多人要是没遇上还真不知道我在说啥.
代码片段如下:
public void getDemoData(Subscriber<String> subscriber){HttpService.getInstance().create(DemoService.class).getDemoPicture('params1',params2,params3,'params4').subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(subscriber);
private void requestData() {HttpMethods.getInstance().getDemoData(new Subscriber<String>() { @Override public void onCompleted() { Toast.makeText(MainActivity.this, 'ok', Toast.LENGTH_SHORT).show(); } @Override public void onError(Throwable e) {showToast(getResources().getString(R.string.error_data)); } @Override public void onNext(String str) { //....} }}); }
private HttpService() {OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);httpClientBuilder.addInterceptor(interceptor).build();retrofit = new Retrofit.Builder().client(httpClientBuilder.build()).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).baseUrl(BingUrl.BING).build(); }
HttpLoggingInterceptor 能打印出请求成功状态和返回的数据,只是回调都没走
问题解答
回答1:这个问题我也遇到了,就是出现错误的时候不返回对象,返回string,然后解析不了,目前只是提示写死的错误信息,或者直接用string解析,不知道有什么办法可以解决
回答2:返回String肯定能得到,贴源码啊,你怎么写的
回答3:出错了 就在onError里处理呀
回答4:第一个方法中getDemoData传入的参数应该是写错了,应该是Subscriber<DemoService> subscriber,而不是Subscriber<String> subscriber
相关文章:
1. javascript - 自己开发jQuery插件能不能实现一个插件里有多个功能2. python - pandas读取中文的时候乱码 要如何解决?3. javascript - 对象里的一些没用了的数据大家是怎么处理的~4. css - flexbox 布局 設定 margin的問題5. javascript - vue报错,昨天也是这么写的也没报错呀,今天就报错了,不知原因。求解决6. javascript - 求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid7. python爬虫 - Python:网页爬取Ajax地址,结果与浏览器显示的不一致?8. javascript - 事件的定义有无函数的区别9. html - 竖线怎么实现10. 使用 CSS3 的 Media Query 浏览器会加载其他不同分辨率的 css 文件么

网公网安备