[JAVA] POST-Bilder von Android auf PHP mit Retrofit

Hintergrund

Nachforschungen haben es erforderlich gemacht, Bilder von Android auf PHP in Azure zu veröffentlichen Es scheint Spaß zu machen, ohne über asynchrone Verarbeitung nachzudenken! !! Ich habe Retrofit 2 wegen des Kurzschlussdenkens übernommen, war aber unerwartet süchtig danach, also ein Memo

Annahme

Bibliothek importieren

app/build.gradle


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

Implementierung der Schnittstelle

UploadService.class


public interface UploadService {
  @Multipart

  //Der Pfad kann der ohne Basis-URL sein
  @POST("upload/index.php")
  Call<ResponseBody> upload(@Part MultipartBody.Part file);
}

ServiceGenerator -Zitat von Official

ServiceGenerator.class


public class ServiceGenerator {
  
  //Geben Sie hier die Basis-URL an
  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);
  }
}

Upload-Prozess

UploagService service = ServiceGenerator.createService(UploadService.class);  

//Dateien wie Bilder, Musik, Videos usw., die veröffentlicht werden sollen
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("Name des POST-Zielfelds", file.getName(), requestFile);

Call<ResponseBody> call = service.upload(body);
call.enqueue(new Callback<ResponseBody>() {

  //Wird aufgerufen, wenn der Statuscode nicht ein Fehlercode wie 400 ist
  @Override
  public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    //Verarbeitung auf Erfolg
    // response.body();Sie können mit in das Body-Tag der HTML-Antwort gelangen
  }
  
  //Wird aufgerufen, wenn der Statuscode ein Fehlercode wie 400 ist
  @Override
  public void onFailure(Call<ResponseBody> call, Throwable t) {
    //Verarbeitung zum Zeitpunkt des Ausfalls
  }
});

Referenzseite

Recommended Posts

POST-Bilder von Android auf PHP mit Retrofit
[Android] Hochladen von Bildern vom Terminal auf den Server
[Schienen] Wie poste ich Bilder?
Android App, die Bilder aus der Galerie auswählt und anzeigt
[Rails] So laden Sie Bilder mit Carrierwave hoch
[Android] Übergeben von Bildern und Empfangen von Rückrufen beim Teilen mit ShareCompat
* Android * Speichern / Laden von Bildern in einen externen Speicher
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Von der Installation von Eclipse bis zur Ausführung von Java (PHP)
Post to Slack von Play Framework 2.8 (Java)
Versuchen Sie es mit der Emotion API von Android
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
So verknüpfen Sie Bilder mit FactoryBot Active Storage
Minecraft BE Serverentwicklung von PHP nach Java
So laden Sie Bilder von AWS S3 herunter (Rails, Carrierwave)
So verhindern Sie, dass editTextPreference von android PreferenceFragmentCompat beschädigt wird
Generieren Sie Modelle von JSON zu Swift, PHP, C #, JAVA
Übertragen Sie ein Docker-Image von GitHub Actions in die GitHub Container Registry