我正在使用Retrofit(使用RxJava)下载文本文件。
@Streaming
@GET
Observable<ResponseBody> download(@Url String file);
除非用户使用需要网络身份验证的公共wifi,否则一切正常。在这种情况下,下载仍然是成功的,我收到的是一个包含该认证网页的HTML的文件。在这种情况下如何检查并引发错误?我尝试使用Interceptor,NetworkInterceptor(Okhttp),禁用重定向(Retrofit)但没有运气,因为没有抛出异常。
答案 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();
})