首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rx-Java Retrofit未收到任何响应

Rx-Java Retrofit未收到任何响应
EN

Stack Overflow用户
提问于 2017-08-10 21:49:06
回答 1查看 269关注 0票数 0

我正在尝试做一个示例Rxjava-Retrofit应用程序。我有一个从OpenWeatherMap获取用户输入位置的天气信息的API。

我的改进的Api界面看起来像这样

代码语言:javascript
复制
public interface ApiInterface {
   @GET("data/2.5/weather?appid=11111111111")
   Observable<WeatherData> getWeather(@Query("q") String place);
 }

用户必须在编辑文本中输入地名,根据输入的地名,我将调用API。下面是我的全部代码

代码语言:javascript
复制
BehaviorSubject<String> mStringSubject = BehaviorSubject.create();

当用户键入某些内容时

代码语言:javascript
复制
@Override
public boolean onQueryTextChange(String newText) {
    mStringSubject.onNext(newText);
    return true;
}

然后

代码语言:javascript
复制
 mStringSubject
            .debounce(500, TimeUnit.MILLISECONDS)
            .doOnNext(s -> Log.d(TAG, s))
            .flatMap(s -> mApiInterface.getWeather(s))
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .onErrorReturn(throwable -> null)
            .subscribe(new Observer<WeatherData>() {
                @Override
                public void onSubscribe(@NonNull Disposable d) {
                    Log.d(TAG, "onSubscribe: ");
                }

                @Override
                public void onNext(@NonNull WeatherData weatherData) {
                    Log.d(TAG, "onNext: " + weatherData);
                }

                @Override
                public void onError(@NonNull Throwable e) {
                    Log.d(TAG, "onError: " + e.getMessage());
                }

                @Override
                public void onComplete() {
                    Log.d(TAG, "onComplete: ");
                }
            });

这段代码有什么问题吗?由于某些原因,它没有在日志中显示任何内容。我做错了什么吗?

注意:当我这样做的时候

代码语言:javascript
复制
 mStringSubject
            .debounce(500, TimeUnit.MILLISECONDS)
            .subscribe(s -> Log.d(TAG, s));

它可以正确地打印用户输入值。

EN

回答 1

Stack Overflow用户

发布于 2017-08-11 00:12:38

尝尝这个

首先移出主线程,在IO线程上进行服务调用。

代码语言:javascript
复制
mStringSubject
            .debounce(500, TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.computation()))
            .doOnNext(s -> Log.d(TAG, s))
            .flatMap(s -> mApiInterface.getWeather(s))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45615630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档