我正在處理一段代碼以執行多部分表單數據POST請求,在我的情況下,這只是將圖像上載到具有參數的服務器。這是我現在有:在Android中執行多部分文件上傳的好方法
我有一個按鈕來觸發多的要求,在按鈕OnClickListener,我有這樣的代碼來編一個新的線程:
new Thread(new Runnable(){
@Override
public void run() {
String photoUri = getPhotoUri();
String url = getEndPointUrl();
try {
NewPostRequest.postFile(url, photoUri, <Other Params...>);
} catch (Exception e) {
// Exception Handling
}
}).start();
而且NewPostRequest.postFile
只是使用阿帕奇HTTP客戶端提出請求,基本上象下面這樣:
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
File file = new File(fileUri);
FileBody fb = new FileBody(file);
builder.addPart("file", fb);
builder.addTextBody("param", otherParam);
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);
我需要旋轉一個新的線程,每次因爲最近的Android版本不會讓程序做出UI線程HTTP請求。但是,我真的反對像上面的代碼那樣隨意創建一個隨機線程並讓它失去控制。我曾嘗試使用Google Volley庫,但在上傳大型數據文件(如圖像)時,它並不是一個小工具。
我在想我應該怎麼做才能使這個調用更易於管理?
===== UPDATE =====
我切換到使用的AsyncTask和現在它的工作原理確定。我會繼續討論這個問題,看看有沒有更好的方法。
+1我介紹給離子。 –