2016-06-13 3 views
1

Я использовал для отправки POST запроса с Модернизированным 1,9:Multipart дооснащение 1,9 -> 2

TypedFile typedFile = picture != null ? new TypedFile("image/*", tempFile) : null; 

@Multipart 
@POST("/goals") 
Observable<Goal> postGoal(
     @Part("name") String name, 
     @Part("picture") TypedFile picture 
     ); 

я переехал в дооснащения 2.0.2, но я не могу заставить его работать так же. По https://github.com/square/retrofit/issues/1140 я использовал:

RequestBody name = RequestBody.create(MediaType.parse("text/plain"), name); 
RequestBody picture = RequestBody.create(MediaType.parse("image/*"), tempFile); 


    @Multipart 
    @POST("goals") 
    Observable<Goal> postGoal(
      @Part("name") RequestBody name, 
      @Part("picture\"; filename=\"temp.png\" ") RequestBody picture 
    ); 

Но, кажется, запрос будет без файла (фото). Что не так ?

ответ

4

Чтобы загрузить изображение с использованием retrofit 2.0, вы можете использовать MultipartBody.Part в качестве параметра вашего изображения. Надейтесь, что это решение решит вашу проблему.

Ваше объявление API

@Multipart 
@POST("/goals") 
Observable<Goal> postGoal(@Part("name") String name, @Part MultipartBody.Part imageFile); 

Ваш апи вызов

RequestBody imageName = RequestBody.create(MediaType.parse("text/plain"), name); 

//prepare image file 
File file = new File(imagePath); 
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); 
MultipartBody.Part imageFileBody = MultipartBody.Part.createFormData("picture", file.getName(), requestBody); 

YourAPI service = retrofit.create(YourAPI.class); 
Call<Goal> call = service.postGoal(imageName, imageFileBody); 
call.enqueue(new Callback<Goal>() { 
    @Override 
    public void onResponse(Call<Goal> call, Response<Goal> response) { 
     //handle success 
    } 

    @Override 
    public void onFailure(Call<Goal> call, Throwable t) { 

    } 
}); 
+0

Да, это именно то, что я нашел, как хорошо. Я надеялся, хотя будет более четкое решение;) Thx! –

Смежные вопросы