Я загружаю некоторый файл с помощью библиотеки Apache для загрузки нескольких файлов на сервере с помощью многопользовательского объекта. И он загрузился отлично. Но в то же время, когда я получаю доступ к другому HTTP-запросу во время загрузки, сервер блокирует мой весь другой HTTP-запрос и после его загрузки, после предоставления мне другого ответа HTTP. Я не понимаю, что происходит? Пожалуйста, предложите мне решить эту проблему.Проблема для доступа к другому ответу HTTP во время выполнения загрузки в фоновом режиме
Здесь я использовал код для загрузки:
@Override
protected String doInBackground(String... urls) {
String response1 = "";
Prefs = context.getSharedPreferences(prefname, Context.MODE_PRIVATE);
String memberid=Prefs.getString(ImageConstant.MEMBERID, "");
try {
String url=ImageConstant.BASEURL+"image_fileupload.php";
Log.v(TAG, "url is: "+url);
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
for (int i = 1; i <= dataT.size(); i++) {
CustomGallery gallery=dataT.get(i-1);
String filename=gallery.sdcardPath;
Log.v(TAG, "file name: "+filename);
File file = new File(filename);
FileBody fb = new FileBody(file);
builder.addPart("file"+i, fb);
}
builder.addTextBody("member_id", memberid);
builder.addTextBody("count", String.valueOf(dataT.size()));
final HttpEntity yourEntity = builder.build();
CustomMultiPartEntity entity=new CustomMultiPartEntity(yourEntity, new ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num/(float) totalsizeimage) * 100));
//Log.v(TAG, "publish progress :"+totalsizeimage);
ImageUtil.galleryLog(TAG, "publish progress :"+totalsizeimage);
}
});
totalsizeimage = entity.getContentLength();
// Log.v(TAG, "total size is: "+totalsize);
ImageUtil.galleryLog(TAG, "total size is: "+totalsize);
post.setEntity(entity);
HttpResponse response = client.execute(post);
response1= getContent(response);
// response=postFile(dataT, memberid);
Log.v(TAG, "response is: "+ response1);
} catch (Exception e) {
e.printStackTrace();
}
return response1;
}
Используйте 'THREAD_POOL_EXECUTOR' для вашего' AsyncTask' которая проходит параллельно. – Piyush
в asyncask загружать файл async или другой HTTP-запрос asynctask? –