2016-07-19 7 views

Antwort

1

ein Bild hochladen:

File file = new File("/storage/emulated/0/Pictures/MyApp/test.jpg"); 

RequestBody requestBody = new MultipartBuilder() 
          .type(MultipartBuilder.FORM) 
          .addPart(Headers.of("Content-Disposition", 
            "form-data; name=\"image\";filename=\"" 
            + file.getName() + "\""), 
           RequestBody.create(MEDIA_TYPE_JPG, file)) 
          .build(); 

// Todo: replace with your own interface e.g. apiClient 
Call<ResponseBody> call = apiClient.uploadImage(requestBody); 

call.enqueue(new Callback<ResponseBody>() { 

    @Override 
    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
     Log.v("Upload", "success"); 
    } 

    @Override 
    public void onFailure(Call<ResponseBody> call, Throwable t) { 
     Log.e("Upload error:", t.getMessage()); 
    } 
}); 

Beispiel Schnittstelle und erforderliche Endpunktmethode definiert:

public interface ApiClient { 
    @Multipart 
    @POST("/content") 
    Call<ResponseBody> uploadImage(@Part("image") RequestBody image); 
} 
+0

Es funktioniert! Vielen Dank. Ich habe eine ganze Weile damit zu kämpfen gehabt. – Egis

0

können Sie Fast Android Networking Bibliothek für die versuchen können, wie einfach und schnell Bibliothek android Networking ist. Ich habe diese Bibliothek erstellt, die auf OKHttp aufgebaut ist und mehr Funktionen und Anpassungen als Retrofit hat.

in Ihrer gradle Datei hinzufügen depedencies

Kompilierung 'com.amitshekhar.android:android-networking:0.0.1'

File file = new File(imagePath); 
    AndroidNetworking.upload(url) 
        .addMultipartFile("img",file) 
        .setTag("uploadTest") 
        .setPriority(Priority.HIGH) 
        .build() 
        .setUploadProgressListener(new UploadProgressListener() { 
         @Override 
         public void onProgress(long bytesUploaded, long totalBytes) { 
         // do anything with progress 
         } 
        }) 
        .getAsJSONObject(new JSONObjectRequestListener() { 
         @Override 
         public void onResponse(JSONObject response) { 
         // do anything with response     
         } 
         @Override 
         public void onError(ANError error) { 
         // handle error 
         } 
        }); 
} 
+0

Ich kann keine andere Bibliothek verwenden. Ich benutze Retrofit2 bereits überall in meiner App. Eine Bibliothek zu ersetzen wäre eine Belastung. – Egis

+0

@Egis: Ok Bro, ich werde versuchen, es durch Nachrüstung zu lösen und informieren Sie bald. Ich wollte nur ein Feedback zu https://github.com/amitshekhariitbhu/Fast-Android-Networking haben. –