Android multipart image upload with HttpConnectionParams deprecated in new api

后端 未结 4 1242
难免孤独
难免孤独 2020-12-11 19:05

I am using MultiPartRequester class for multipart image upload to server, but i found that some part is deprecated in this. for example HttpConnectionParams , getConnectionM

4条回答
  •  再見小時候
    2020-12-11 19:35

    public class MultiPartRequester {
    
    private Map map;
    private AsyncTaskCompleteListener mAsynclistener;
    private int serviceCode;
    
    private HttpClient httpclient;
    private Activity activity;
    private AsyncHttpRequest request;
    
    public MultiPartRequester(Activity activity, Map map,
    		int serviceCode, AsyncTaskCompleteListener asyncTaskCompleteListener) {
    	this.map = map;
    	this.serviceCode = serviceCode;
    	this.activity = activity;
    
    	// is Internet Connection Available...
    
    	if (AndyUtils.isNetworkAvailable(activity)) {
    		mAsynclistener = (AsyncTaskCompleteListener) asyncTaskCompleteListener;
    		request = (AsyncHttpRequest) new AsyncHttpRequest().execute(map
    				.get("url"));
    	} else {
    		showToast("Network is not available!!!");
    	}
    
    }
    class AsyncHttpRequest extends AsyncTask {
    
    	@Override
    	protected String doInBackground(String... urls) {
    		map.remove("url");
    		try {
    
    			HttpPost httppost = new HttpPost(urls[0]);
    			httpclient = new DefaultHttpClient();
    			HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 80000);
    
    			MultipartEntityBuilder builder = MultipartEntityBuilder
    					.create();
    
    			for (String key : map.keySet()) {
    				AppLog.Log(key, map.get(key));
    				builder.addTextBody(key, map.get(key), ContentType
    						.create("text/plain", MIME.UTF8_CHARSET));
    
    			}
    			httppost.setEntity(builder.build());
    
    			ActivityManager manager = (ActivityManager) activity
    					.getSystemService(Context.ACTIVITY_SERVICE);
    
    			if (manager.getMemoryClass() < 25) {
    				System.gc();
    			}
    			HttpResponse response = httpclient.execute(httppost);
    
    			String responseBody = EntityUtils.toString(
    					response.getEntity(), "UTF-8");
    
    			return responseBody;
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		} catch (OutOfMemoryError oume) {
    			System.gc();
    
    			Toast.makeText(
    					activity.getParent().getParent(),
    					"Run out of memory please colse the other background apps and try again!",
    					Toast.LENGTH_LONG).show();
    		} finally {
    			if (httpclient != null)
    				httpclient.getConnectionManager().shutdown();
    
    		}
    
    		return null;
    
    	}
    
    	@Override
    	protected void onPostExecute(String response) {
    
    		if (mAsynclistener != null) {
    			mAsynclistener.onTaskCompleted(response, serviceCode);
    		}
    
    	}
    }
    private void showToast(String msg) {
    	Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show();
    }
    
    public void cancelTask() {
    	request.cancel(true);
    	// System.out.println("task is canelled");
    
    }
    }

提交回复
热议问题