改造:检测是否需要网络身份验证

时间:2016-09-14 07:31:04

标签: retrofit rx-java retrofit2 rx-android

我正在使用Retrofit(使用RxJava)下载文本文件。

 @Streaming
 @GET
 Observable<ResponseBody> download(@Url String file);

除非用户使用需要网络身份验证的公共wifi,否则一切正常。在这种情况下,下载仍然是成功的,我收到的是一个包含该认证网页的HTML的文件。在这种情况下如何检查并引发错误?我尝试使用Interceptor,NetworkInterceptor(Okhttp),禁用重定向(Retrofit)但没有运气,因为没有抛出异常。

1 个答案:

答案 0 :(得分:1)

校验和您的文件并在获得时检查它,或检查内容类型:

@Streaming
@GET
Observable<Response<ResponseBody>> download(@Url String file);

download("http://...")
.map(response -> {
     if(!"application/my-content-type".equals(
           response.headers("Content-Type")) {
        throw new RuntimeException("Bad download");
     }
     return resource.body();
})