2016-09-14 3 views
0

Я использую Retrofit (с RxJava) для загрузки текстового файла.Модернизация: обнаружение необходимости проверки подлинности сети

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

Все работает отлично, за исключением случаев, когда пользователь использует общедоступный Wi-Fi, требующий аутентификации в Интернете. В этом случае загрузка все еще успешна, и я получаю файл, содержащий HTML этой веб-страницы проверки подлинности. Как проверить и повысить ошибку в этом случае? Я попытался с Interceptor, NetworkInterceptor (Okhttp), отключить перенаправление («Дооснащение»), но не повезло, потому что не выбрано исключение.

ответ

1

Либо контрольная сумма файл и проверить его, когда вы получите его, или проверить Content-Type:

@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(); 
}) 
Смежные вопросы