La recherche a rendu nécessaire le POST d'images d'Android vers PHP sur Azure Cela semble amusant à utiliser sans penser au traitement asynchrone! !! J'ai adopté Retrofit 2 à cause de la pensée court-circuitée, mais j'en étais accro de manière inattendue, donc un mémo
app/build.gradle
dependencies {
  :
  :
  compile 'com.squareup.retrofit2:retrofit:2.1.0+'
}
UploadService.class
public interface UploadService {
  @Multipart
  //Le chemin peut être celui sans l'URL de base
  @POST("upload/index.php")
  Call<ResponseBody> upload(@Part MultipartBody.Part file);
}
ServiceGenerator -Citation de Officiel
ServiceGenerator.class
public class ServiceGenerator {
  
  //Spécifiez l'URL de base ici
  public static final String API_BASE_URL = "http://example.com/";
  private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
  private static Retrofit.Builder builder = new Retrofit.Builder().baseUrl(API_BASE_URL);
  public static <S> S createService(Class<S> serviceClass) {
    Retrofit retrofit = builder.client(httpClient.build()).build();
    return retrofit.create(serviceClass);
  }
}
UploagService service = ServiceGenerator.createService(UploadService.class);  
//Fichiers tels que des images, de la musique, des vidéos, etc. à publier
String filePath = ”path/to/your/file”;
File file = new File(filePath);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("Nom du champ de destination du POST", file.getName(), requestFile);
Call<ResponseBody> call = service.upload(body);
call.enqueue(new Callback<ResponseBody>() {
  //Appelé lorsque le code d'état est autre qu'un code d'erreur tel que 400
  @Override
  public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    //Traitement en cas de succès
    // response.body();Vous pouvez entrer dans la balise body de la réponse HTML avec
  }
  
  //Appelé lorsque le code d'état est un code d'erreur tel que 400
  @Override
  public void onFailure(Call<ResponseBody> call, Throwable t) {
    //Traitement au moment de l'échec
  }
});
Recommended Posts