[JAVA] POST des images d'Android vers PHP en utilisant Retrofit

Contexte

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

supposition

Importer la bibliothèque

app/build.gradle


dependencies {
  :
  :
  compile 'com.squareup.retrofit2:retrofit:2.1.0+'
}

implémentation de l'interface

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);
  }
}

Processus de téléchargement

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
  }
});

Site de référence

Recommended Posts

POST des images d'Android vers PHP en utilisant Retrofit
[Android] Téléchargement d'images du terminal vers le serveur
[rails] Comment publier des images
Application Android qui sélectionne et affiche des images de la galerie
[Rails] Comment télécharger des images à l'aide de Carrierwave
[Android] Comment transmettre des images et recevoir des rappels lors du partage à l'aide de ShareCompat
* Android * Enregistrement / chargement d'images sur un stockage externe
Connectez-vous de Java à MySQL à l'aide d'Eclipse
De l'installation d'Eclipse à l'exécution de Java (PHP)
Publier sur Slack à partir de Play Framework 2.8 (Java)
Essayez d'utiliser l'API Emotion d'Android
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
Comment lier des images à l'aide de FactoryBot Active Storage
Développement de serveur Minecraft BE de PHP à Java
Comment télécharger des images depuis AWS S3 (rails, carrierwave)
Comment empêcher editTextPreference de Android PreferenceFragmentCompat de se rompre
Générer des modèles de JSON à Swift, PHP, C #, JAVA
Transférer une image Docker des actions GitHub vers GitHub Container Registry