Hello I have never worked with HttpResponses before and I want to be able to disconnect from the network after 3 minutes given that the user loses connection from the network. Is there a full code wherein I can see such thing?
Asked
Active
Viewed 120 times
2 Answers
0
I know two possible approaches:
- The simplest way, using DefaultHttpClient, already explained in isma3l recommended link:
Something like this:
private DefaultHttpClient httpClient;
// set connection timeout to 1 second
HttpConnectionParams.setConnectionTimeout(httpParameters, 1000);
// set socket timeout to 1 second
HttpConnectionParams.setSoTimeout(httpParameters, 1000);
httpClient = new DefaultHttpClient(httpParameters);
/* === and then, use your httpClient to perform your operations... === */
- The hardcore way: manually handle the connection with thread/handler by calling the Http operations in another thread with a handler to receive its callbacks. In the handler, you call a postDelayed method passing as parameter a Runnable to take care of the timeout.
Something like this:
// create a handler to load content
private final Runnable loadContent = new Runnable() {
@Override
public void run() {
/* === CALL HTTP AND PROCESS IT HERE === */
// remove the timeout runnable after receiving http response
handler.removeCallbacks(timeoutRunnable);
}
}
// create a handler to handle timeout
private final Runnable timeoutRunnable = new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
};
// create a handler to handle the connection
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1: // timeout
handler.removeCallbacks(timeoutRunnable);
break;
/* === OTHER MESSAGES TO HANDLE OTHER SITUATIONS === */
}
}
};
// call the connection inside a new thread
private void createNewLoader() {
// create a delayed runnable with a timeout of 1 second
handler.postDelayed(timeoutRunnable, 1000);
// call the content loader
new Thread(loadContent).start();
}
Hope it helps.
0
Don't use DefaultHttpClient
, Google deprecated it, stopped supporting it, and recommends using URLConnection which is faster. Timeouts are handled as so:
// Prepare connection
URL url = new URL(sUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(TIMEOUT);
conn.setReadTimeout(TIMEOUT);

Cigogne Eveillée
- 2,178
- 22
- 36