android retrofit retrofit2

android - Enviar archivo al servidor a través de retrofit2 como objeto



(1)

Para encontrar cómo enviar su archivo al servidor a través de Retroit, los siguientes pasos pueden resolver su problema:

1- Instalar PostMan .

2- En PostMan seleccione Post y pegue URL luego vaya a la pestaña Body y elija form-data .

3- La parte de In Key escribe el nombre del archivo del servidor y el tipo de conjunto de partes de In Value como File y sube el archivo deseado.

4- Haga clic en Enviar y luego en Generar código .

5- Ahora tienes algo como lo siguiente:

6- Ahora solo queda un paso, ve a tu servicio de actualización y pega información como (en mi caso quiero subir audio.mp3 ):

@Multipart @POST("app/") Call<JResponse> upload(@Part("file/"; filename=/"audio.mp3/" ") RequestBody file);

Y el cuerpo de la solicitud sería algo como:

File file = new File("YOUR_PATH"); RequestBody temp = RequestBody.create(MediaType.parse("multipart/form-data"), file);

Use this patrón y envíelo con:

ServiceHelper.getInstance().sendAudio(temp).enqueue(new Callback<JResponse>() { @Override public void onResponse(Call<JResponse> call, Response<JResponse> response) { Log.e("test", "onResponse: tst"); } @Override public void onFailure(Call<JResponse> call, Throwable t) { Log.e("test", "onResponse: tst"); } });

Quiero enviar un archivo de audio a un servidor con retrofit2 . Seguí this tutorial pero el archivo no está en el formato que acepta el servidor. Basado en este tutorial probé lo siguiente:

RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); MultipartBody.Part audio = MultipartBody.Part.createFormData("file", "file", requestBody);

y la interfaz:

@Headers("Content-Type: application/json") @Multipart @POST("app/") Call<JResponse> upload(@Part("file") RequestBody file);

Pero, el file: atributo no se envía. (Si cambio @Part con @Body , existe pero hay otro problema)

¿Quiero saber cómo enviar un archivo en el siguiente formato? ¿Debo convertir el archivo de audio al formato base64 ?

{ ''file'' : audio_file }