Вам нужен абстрактный метод в абстрактном классе. Это заставит дочерний класс реализовать метод.
abstract class A {
abstract function a() {}
}
class B extends A {
function a () {
// write your code here.
}
}
Оказывается, что Google Android поставлется с Apache HttpClient 4.0, и я смог выяснить, как сделать это с помощью "Основанного на форме входа в систему" пример в документах HttpClient:
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
/**
* A example that demonstrates how HttpClient APIs can be used to perform
* form-based logon.
*/
public class ClientFormLogin {
public static void main(String[] args) throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("https://portal.sun.com/portal/dt");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println("Login form get: " + response.getStatusLine());
if (entity != null) {
entity.consumeContent();
}
System.out.println("Initial set of cookies:");
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
}
}
HttpPost httpost = new HttpPost("https://portal.sun.com/amserver/UI/Login?" +
"org=self_registered_users&" +
"goto=/portal/dt&" +
"gotoOnFail=/portal/dt?error=true");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("IDToken1", "username"));
nvps.add(new BasicNameValuePair("IDToken2", "password"));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
response = httpclient.execute(httpost);
entity = response.getEntity();
System.out.println("Login form get: " + response.getStatusLine());
if (entity != null) {
entity.consumeContent();
}
System.out.println("Post logon cookies:");
cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
}
}
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
}
Я не работаю с Google Android, но я думаю, что Вы найдете дело не в этом трудно для получения этой работы. При чтении соответствующего бита учебного руководства Java, Вы будете видеть, что зарегистрированный cookiehandler получает обратные вызовы из кода HTTP.
Таким образом, если нет никакого значения по умолчанию (имейте Вас, проверил если CookieHandler.getDefault()
действительно является пустым?) затем можно просто расширить CookieHandler, реализация помещала/получала и заставляет его работать в значительной степени автоматически. Обязательно рассмотрите параллельный доступ и т.п., если Вы идете тем путем.
править: Очевидно, необходимо было бы установить экземпляр пользовательской реализации как обработчик по умолчанию через CookieHandler.setDefault()
получить обратные вызовы. Забыл упоминать это.