Retrofit 1.9
とSpring Serverで動作するAndroidアプリケーションがありました。 Androidアプリケーションはファイルを完全にダウンロードできます。 Retrofit 2.0
に移行しようとしています。Retrofit 2.0とSpring Serverを使用してファイルをダウンロードする
レトロフィット1.9コード
コントローラサーバー:
@RequestMapping(value = GET_MAP , method = RequestMethod.GET)
public void getMap(@PathVariable("filename")String filename
,HttpServletResponse response) throws IOException {
Files.copy(filename + ".zip", response.getOutputStream());
}
AndroidのインタフェースAPI
@Streaming
@GET(GET_MAP)
public Response getMap(@Path("filename") long id);
ので、ダウンロードするために移行するためのグーグルでの後ファイルin Retrofit 2.0
私はAndroidのインターフェイスApiのCall<ResponseBody>
を使用する必要があります。
OPTION 1コントローラサーバーコード
@RequestMapping(value = GET_MAP , method = RequestMethod.GET)
public void getMap(@PathVariable("filename")String filename
,HttpServletResponse response) throws IOException {
Files.copy(filename + ".zip", response.getOutputStream());
}
OPTION 2コントローラサーバーコード
@RequestMapping(value = GET_MAP , method = RequestMethod.GET)
public @ResponseBody HttpServletResponse getMap(@PathVariable("filename")String filename
,HttpServletResponse response) throws IOException {
Files.copy(filename + ".zip", response.getOutputStream());
return response;
}
AndroidのインタフェースAPI
@Streaming
@GET(GET_MAP)
public Call<ResponseBody> getMap(@Path("filename") long id);
:私はこのような何かを試してみました
しかし、これらの2つのオプションを使用して応答長は私を与え-1:
response.body().contentLength() = -1
私はコントローラのメソッドを移行する必要がどのように?