All*_*ang 1 java multithreading android request androidhttpclient
我正在编写一段代码来执行多部分表单数据POST请求,在我的情况下,只是将图像上传到带有参数的服务器.这就是我现在拥有的:
我有一个触发多部分请求的按钮,在按钮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();
Run Code Online (Sandbox Code Playgroud)
而且NewPostRequest.postFile只是使用Apache Http Client发出请求,基本如下:
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);
Run Code Online (Sandbox Code Playgroud)
我需要每次都旋转一个新线程,因为最近的Android版本不允许程序在UI线程上发出http请求.但是,我真的反对旋转一个随机线程,让它像上面的代码一样失控.我曾尝试使用Google Volley库,但在上传像image这样的大型数据文件时,它并不是一个很少的工具.
我想知道我应该做些什么来使这个电话更容易管理?
=====更新=====
我切换到使用AsyncTask,它现在可以正常工作.我将保持这个问题,看看是否有任何人有更好的方法.