Загрузка файлов Android — модифицируйте Multipart с помощью серверной части в качестве Java Rest API

#java #android #file-upload #retrofit #multipartfile

#java #Android #загрузка файлов #модернизация #multipartfile

Вопрос:

Не могли бы вы помочь мне с загрузкой файлов Multipart Retrofit с помощью серверного java rest api (mysql db). Я пробовал использовать приведенный ниже код, но он не работает..

Часть модернизации

Activity.java

 private void checkingst(File file){
   RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"),file);
   MultipartBody.Part body = MultipartBody.Part.createFormData("file",file.getName(),requestBody);

   Call<String> chkst = FarmOwnerApi.getServices().uploadFile(body);
    chkst.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {
            if(!response.isSuccessful())
            {
                return;
            }

            Toast.makeText(getApplicationContext(),"Uploaded",Toast.LENGTH_SHORT).show();
        }

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

        }
    });
}
  

FarmOwnerApi.java

 public static FarmOwnerService farmOwnerServices = null;
private static final String Base_URL = "http://192.168.1.6:8080/myfarm/farmowner/";

public static FarmOwnerService getServices()
{
    if(farmOwnerServices==null)
    {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Base_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        farmOwnerServices = retrofit.create(FarmOwnerService.class);
    }
    return farmOwnerServices;
}
public interface FarmOwnerService {

    @Multipart
    @POST("uploadFile")
    Call<String> uploadFile(@Part MultipartBody.Part file);
  

Серверная часть — Java Rest API

 @RequestMapping(value="/uploadFile" )
public String uploadFile(@RequestParam("file") MultipartFile file) {
  

Комментарии:

1. Вы запускаете код на эмуляторе или на реальном устройстве? Попробуйте использовать реальное устройство, поскольку эмулятор Android имеет собственный NAT

2. Я использовал samsung a21s. Я думаю, что модернизация и java rest api могут подключаться. Не уверен, что подпись метода в retrofitand rest api верна. Во время debbuging он застрял на proxy4