i am trying to create handler which will terminate the http request in case that the server is not responding over 20 seconds. and i would like to know what is the best approach to do that from the Async task class.
this is my code:
public class DBcontroller extends AsyncTask <List<NameValuePair>, Void, String>{
private static String url = "";
private Context context = null ;
public AsyncResponse delegate= null;
private PropertyReader propertyReader;
private Properties properties;
public DBcontroller(Context mycontext,AsyncResponse myresponse) {
context = mycontext;
delegate = myresponse;
propertyReader = new PropertyReader(context);
properties = propertyReader.getMyProperties("config.properties");
url = properties.getProperty("url");
}
@Override
protected void onPreExecute() {
super.onPreExecute();
delegate.preProcess();
}
@Override
protected String doInBackground(List<NameValuePair>... params) {
return postDataToServer(params[0]);
}
@Override
protected void onPostExecute(String resStr) {
super.onPostExecute(resStr);
delegate.handleResponse(resStr);
}
private String postDataToServer(List<NameValuePair> list) {
//check
for (int i=0;i<list.size();i++)
Log.d("responseString", list.get(i).toString());
//check
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
String responseString = null;
try {
post.setEntity(new UrlEncodedFormEntity(list));
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
responseString = EntityUtils.toString(entity);
Log.d("responseString1", responseString);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(responseString!= null)
Log.d("responseString2", responseString);
return responseString;
}
}