Вызов DefaultHttpClient как синглтона - PullRequest
1 голос
/ 21 сентября 2011

Я хотел бы преобразовать DefaultHttpClient в одноэлементный класс

public class HttpClient {   
private static final String TAG = "&&----HTTPClient-----**";
public static void SendHttpPost (String URL, JSONObject jsonObjSend){

    try{    

            DefaultHttpClient httpclient = new DefaultHttpClient();
            HttpPost httpPostRequest = new HttpPost(URL);
}

Как мне поступить?На самом деле, я попробовал некоторые методы их реализации, но у меня это не сработало.

Ниже приведен пример того, как должен выглядеть мой синглтон

public class DefaultHttpClient {
static DefaultHttpClient instanceCE;    
public static DefaultHttpClient getInstance(){
    if(instanceCE == null){
        instanceCE = new DefaultHttpClient ();
    }

    return instanceCE;

}

DefaultHttpClient object = new DefaultHttpClient .getInstance(); //calling it here

Я знаю, что эта реализация неверна в ожиданииВаш вклад, чтобы помочь мне.Спасибо!

Я поставил окончательную реализацию, которая не работает.

public class HttpClient {
public static DefaultHttpClient instanCE;
private static final String TAG = "&&----HTTPClient-----**";
public static DefaultHttpClient getInstance(){
    if(instanCE == null){
        instanCE = new DefaultHttpClient();
    }
    return instanCE;
}
public static void SendHttpPost (String URL, JSONObject jsonObjSend){

    try{    
            DefaultHttpClient httpclient = DefaultHttpClient.getInstance();
            HttpPost httpPostRequest = new HttpPost(URL);

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

3 вещи:

1) Вам необходимо создать приватный конструктор, чтобы вы были уверены, что getInstance() - единственный способ создать экземпляр.

private DefaultHttpClient() {
    // Optional Code
}

2) getInstance() является статическим, поэтому его следует называть так:

DefaultHttpClient object = DefaultHttpClient.getInstance();

3) Вам не хватает закрытия }

EDIT:
«Я получаю сообщение об ошибке, в котором говорится, что метод не определен для DefaultHttpClient»

Если это так, убедитесь, что вы импортируете правильный класс, а не org.apache.http.impl.client.DefaultHttpClient

2 голосов
/ 22 сентября 2011

В вашем коде нет ничего плохого, кроме того, что вы неправильно его называете.

 DefaultHttpClient object = DefaultHttpClient.getInstance();

Также, кажется, ваши имена перепутаны.Переименуйте DefaultHttpClient во что-то другое, например MyHttpclient в первой и третьей строке синглтона.Это должно исправить это определенно.

Ура!

1 голос
/ 21 сентября 2011

Кажется, все в порядке, вы просто называете это неправильно.Метод getInstance () является статическим.Таким образом, правильный способ его вызова:

DefaultHttpClient object = DefaultHttpClient.getInstance();
...