android - Retrofit2 不发送请求(不使用 OkHttp 进行日志记录)

标签 android retrofit2 okhttp rx-java2

我正在尝试将 Retrofit2 与 RxJava2 一起使用,这是 Api:

public class App extends Application {

    final String SERVER_ENDPOINT = "https://api.vk.com";

    private Retrofit mRetrofit;
    private static ImageService mImageService;
    HttpLoggingInterceptor httpLoggingInterceptor;

    @Override
    public void onCreate() {

        super.onCreate();
        httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient okHttpClient = createClient();
        mRetrofit = new Retrofit.Builder()
                .baseUrl(SERVER_ENDPOINT)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
        mImageService = mRetrofit.create(ImageService.class);
    }

    private OkHttpClient createClient() {

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.addInterceptor(httpLoggingInterceptor);
        return builder.build();
    }

    public static ImageService getImageService() {

        return mImageService;
    }
}

即服务接口(interface):

public interface ImageService {

    @GET("/method/photos.get")
    Observable<GetPhotoResponse> getImages(
            @Query("owner_id") int owner_id,
            @Query("album_id") String album_id,
            @Query("count") int count,
            @Query("v") String version);
}

当我调用 getImages() 方法时,logcat 中没有出现 OkHttp 日志记录。并且图片不会下载到 ImageView

有gradle.build:

//RxJava2
    compile "io.reactivex.rxjava2:rxjava:2.1.0"
    //Retrofit2
    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
    //Okhttp
    compile 'com.squareup.okhttp3:okhttp:3.6.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'
    //Glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
    //Gson
    compile 'com.google.code.gson:gson:2.7'
    //RecyclerView
    compile 'com.android.support:recyclerview-v7:25.3.0'

这是怎么回事??需要帮助!

代码,我在Interactor中调用方法:

public Observable<GetPhotoResponse> downloadImages() {

        Log.d("tag", "downloadImages: ");
        return downloadImagesFromVK()
                .doOnNext(getPhotoResponse -> {
                    Log.d("tag", "downloadImages: YESSS");
                })
                .doOnComplete(() -> {
                    Log.d("tag", "downloadImages: COMPLETE");
                })
                .doOnError(throwable -> {
                    Log.d("tag", "downloadImages: ERROR");
                });
    }

    public Observable<GetPhotoResponse> downloadImagesFromVK() {

        return imageService.getImages(
                VkConstants.OWNER_ID,
                VkConstants.ALBUM_ID,
                VkConstants.COUNT,
                VkConstants.VK_API_VERSION);
    }

演讲者:

public void startDownloadImages() {

        mMainView.showProgressBar();

        mInteractor.downloadImages()
                .doOnNext(getPhotoResponse -> {
                    mMainView.setImagesToView(mInteractor
                            .getUrlsListMaxSize(getPhotoResponse));
                })
                .doOnError(throwable -> mMainView.showConnectionProblemError());
    }

最佳答案

doOnNext 和 doOnError 是订阅的副作用,但仍然需要发生。该链返回一个需要订阅的 Observable。

尝试用类似的代码替换您的代码

mInteractor.downloadImages()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(getPhotoResponse -> {
                    mMainView.setImagesToView(mInteractor
                            .getUrlsListMaxSize(getPhotoResponse));
                }, e -> mMainView.showConnectionProblemError());

`

订阅是奇迹发生的地方,可观察对象被触发来完成它的工作。

关于android - Retrofit2 不发送请求(不使用 OkHttp 进行日志记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747958/

相关文章:

java - 获取请求在 Android 设备上不起作用,但它在我的电脑上起作用

安卓 GCM "error":"NotRegistered"

Android ContentProvider数据库查询多张表

android - 使用 customAdapter 从 Listview 获取所有选中项目的列表

java - 改造不良请求和 RecyclerView : No adapter attached; skipping layout

android - Retrofit2 - 全局检查响应代码

java - 如何使用 Android 设备从 localhost (Mac) 中的服务访问 api

android - Retrofit2 204 No Content 有内容异常

android:如何选择联系人电话号码

java - 来自 API 调用的字符串翻译