package de.kamelstall.modsde.comm;
import java.io.IOException;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Handler;
import android.util.Log;
public class AsynchronousSender extends Thread {
private static final DefaultHttpClient httpClient = new DefaultHttpClient();
private static boolean cookiesLoaded = false;
private HttpUriRequest request;
private Handler handler;
private CallbackWrapper wrapper;
protected AsynchronousSender(HttpUriRequest request, Handler handler, CallbackWrapper wrapper) {
this.request = request;
this.handler = handler;
this.wrapper = wrapper;
}
public void run() {
try {
final HttpResponse response;
synchronized (httpClient) {
response = getClient().execute(request);
// store cookies
String cookies = CookieFactory.stringFromCookies(getClient().getCookieStore().getCookies());
SharedPreferences preferences = MdeStatus.getInstance().getSharedPreferences();
Editor editor = preferences.edit();
editor.putString(MdeStatus.PREF_COOKIES, cookies);
editor.commit();
Log.d("MDE", "Stored cookies: " + cookies);
}
// process response
if (wrapper != null && wrapper.hasCallback()) {
wrapper.setResponse(response);
handler.post(wrapper);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private DefaultHttpClient getClient() {
if (!cookiesLoaded) {
// load cookies
CookieStore cookieStore = httpClient.getCookieStore();
SharedPreferences preferences = MdeStatus.getInstance().getSharedPreferences();
String cookieStr = preferences.getString(MdeStatus.PREF_COOKIES, null);
if (cookieStr != null) {
List<Cookie> cookies = CookieFactory.loadCookiesFromString(cookieStr);
for (Cookie c : cookies) {
cookieStore.addCookie(c);
}
}
}
return httpClient;
}
}
|