2015-12-31 2 views
1

Я создаю рельсы backend для загрузки изображения из браузера & Мобильный клиент (Android) с помощью paperclip gem. Он отлично работает со всеми браузерами, мобильным браузером, а также с HTTP REST Client, но не работает с клиентом Android с модифицированной http-библиотекой. Действительно ли это совместимы друг с другомRails paperclip gem с Android Retrofit 2.X не работает

ответ

2

ответ ДА ​​ Разве это не легко сделать это работает, но,

Вот как я это сделал ... его работы для меня

Интерфейс декларации

public interface MultimediaApi { 

@Multipart 
@POST("api/v1/multimedia") 
Call<ResponseBody> uploadMultimedia(@Part("tipo]") String tipo, 
           @Part("archivo\"; filename=\"myimageName\" ") RequestBody archivo, // archivo is the how we named the field of the file in rails server 
// see filename=\"myimageName\" does not have file extension to avoid problems with paperclip content types validations 
           @Part("texto") String texto, 
           @Part("acoplable_id") String acoplable_id, 
           @Part("acoplable_type") String acoplable_type 
          ); 
} 

На выполнение потока

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(RestConnection.BASE_URL_MULTIMEDIA) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(client) 
      .build(); 

    MultimediaApi apiService = 
      retrofit.create(MultimediaApi.class); 

    Call<ResponseBody> call; 
    MediaType MEDIA_TYPE = MediaType.parse("image/jpeg"); 
    File file = new File(filePath); 
    RequestBody requestBody = RequestBody.create(MEDIA_TYPE, file); 

    call = apiService.uploadMultimedia(
         type.toString(), 
         requestBody, 
         text.toString(), 
         acopable_id.toString(), 
         acopable_type.toString() 
       ); 

    Response<ResponseBody> response = call.execute(); 


     int statusCode = response.code(); 
     if (statusCode == 201) { 
      // Server response OK    
     } else { 
      //failed 
       Throwable th = new Throwable("Status Code:" + statusCode + " Error uploading image... Response: " + response.body()); 
       return th; 
      } 

это примеры помогают мне много, чтобы решить мою проблему, я просто сделал некоторые изменения, чтобы заставить его работать, так что будьте осторожны, чтобы увидеть каждую деталь

https://guides.codepath.com/android/Consuming-APIs-with-Retrofit

https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server

/**Pura Vida**/ 
+1

Спасибо .. Это было полезно .. Мне не хватало свойства имени файла для запроса. –

+0

Отлично :) приветствую – andrey2ag

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

  • Нет связанных вопросов^_^