2015-03-24 1 views
0

Я загружаю некоторый файл с помощью библиотеки 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; 
     } 
+0

Используйте 'THREAD_POOL_EXECUTOR' для вашего' AsyncTask' которая проходит параллельно. – Piyush

+0

в asyncask загружать файл async или другой HTTP-запрос asynctask? –

ответ

1

Выполнить свой asyntask используя THREAD_POOL_EXECUTOR

.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
+0

всем asynctask нужно с executeOnExecutor или только загрузить файлы asynctask –

+0

сделать это для тех, кому вы хотите запустить его parrallely – Fahim

+0

Спасибо, что работает –

Смежные вопросы