Модернизация переопределяет тип контента на multiformpartbody / form-data после загрузки его в аудио / mp3 - PullRequest
2 голосов
/ 04 апреля 2020

Я загружаю файл с помощью Retrofit на AWS S3, однако тип контента переопределяется при каждой загрузке. У меня есть CONTENT-TYPE audio/mp3, однако файл на S3 переопределяется как тип содержимого multiformpartbody/form-data. Что я делаю неправильно?

        File file = new File(String.valueOf(Uri.parse(selectedImagesList.get(current_image_uploading))));
        ProgressRequestBody requestFile = new ProgressRequestBody(file, "audio/mp3");

        MultipartBody.Part body =
                MultipartBody.Part.createFormData("audio", file.getName(), requestFile);

        RetrofitInterfaces.IUploadMP3 service = RetrofitClientInstance.getRetrofitInstance()
                .create(RetrofitInterfaces.IUploadMP3.class);

        Call<Void> call = service.listRepos(uploadUrls.get(current_image_uploading), body);

1 Ответ

2 голосов
/ 06 апреля 2020

Скорее всего, вам нужно переопределить заголовок при отправке запроса. Вы можете сделать это для каждого запроса:

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();  
httpClient.addInterceptor(new Interceptor() {  
    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        Request original = chain.request();

        Request request = original.newBuilder()
            .header("Content-Type"," audio/mpeg") //Set the content type here
            .method(original.method(), original.body())
            .build();

        return chain.proceed(request);
    }
}

OkHttpClient client = httpClient.build();  
Retrofit retrofit = new Retrofit.Builder()  
    .baseUrl(API_BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build();

Или, если вы не хотите переопределять каждый запрос, вы можете сделать переопределение stati c для своего вызова следующим образом:

public interface YourService {  
    @Headers("Content-Type: audio/mpeg")
    @GET("/your/path")
    Call<List<Task>> myFunction();
}

Оба примера можно найти здесь :

...