Я использую Retrofit 2.0.0-бета2, и мне нужно загрузить некоторые файлы с моего сервера PHP. Мой первый подход, который работал, состоял в том, чтобы напрямую использовать метод GET с его относительного пути к серверу, и я получал правильные байты.
Теперь я попробовал что-то более безопасное, что доставляет мне файл на основе некоторых проверок. Он автоматически выбирает путь к файлу из БД и проверяет правильность сеанса пользователя. Это работает в тестах браузера, и Chrome PC, и Chrome от Android корректно загружают некоторые фотографии.
Я передаю файл, используя заголовок X-Sendfile, примерно так:
header("X-Sendfile: $file_name");
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename="' . basename($file_name) . '"');
Вызов на стороне Android выглядит следующим образом:
@Streaming
@GET("/card/download")
Call<ResponseBody> getCard(@Query("filename") String filename);
Все, что я получаю при открытии файлов, — это эхо-ответ от сервера. Есть ли способ получить «правильные» файлы?
Видимо, возникла какая-то проблема с установкой мода.
Я тоже обновил OkHttp
к версии 2.7.0
Других решений пока нет …