HttpEntity устарел на Android сейчас, какая альтернатива?

С выпуском Android 5.1, похоже, что все материалы Apache http устарели. Глядя на документацию бесполезно; они все говорят

This class was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details.

Что хорошо в первый раз, когда вы его прочитали, но когда класс КАЖДЫЙ, который устарел, говорит, что это не так полезно.

В любом случае, каковы альтернативы для таких классов, как HttpEntity, а именно StringEntity и MultipartEntity? Я заменил BasicNameValuePair на мою собственную реализацию класса Android Pair<T, S> и похоже, что URLEncoder.encode является хорошей заменой для URLEncodedUtils, но я не уверен, что делать с HttpEntity.

ИЗМЕНИТЬ

Я решил просто переписать сетевой материал. Попробуем использовать Retrofit и OkHttp

ИЗМЕНИТЬ

Серьезно взгляните на переключение своих звонков и прочее на "Дооснащение". Довольно изящный. Я рад, что сделал. Было несколько препятствий, но это круто.

Ответ 1

Вы всегда можете импортировать последний Apache Http клиент и использовать его. Кроме того, вы можете взглянуть на сетевую библиотеку, такую ​​как Volley или Retrofit, на всякий случай вы можете использовать это вместо этого. Если вы начинаете новый проект, рекомендуется использовать сетевую библиотеку, потому что нет необходимости изобретать велосипед. Но если вы застряли с использованием HttpClient, тогда читайте дальше.

EDIT: Последние новости о Apache HttpClient (по состоянию на 11/07/2015)

Google Android 1.0 был выпущен с моментальным снимком до BETA от Apache HttpClient. Совпадение с первым выпуском Android Apache API HttpClient 4.0 должен был быть заморожен преждевременно, в то время как многие из интерфейсы и внутренние структуры все еще не были полностью разработаны. В виде Apache HttpClient 4.0 созревал, что проект ожидал, что Google включить последние улучшения кода в свое дерево кода. К сожалению, этого не произошло. Версия Apache HttpClient отправлена с Android фактически превратилась в вилку. В конечном итоге Google решил прекратить дальнейшее развитие своей вилки, отказываясь от обновление до версии запаса Apache HttpClient со ссылкой на совместимость в качестве основания для такого решения. В результате эти Android разработчикам, которые хотели бы продолжать использовать API Apache HttpClient на Android не может использовать новые функции, производительность улучшения и исправления ошибок. Порт Apache HttpClient 4.3 для Android был предназначенные для исправления ситуации путем предоставления официальных выпусков совместимый с Google Android. Учитывая, что с Android API 23 Google fork HttpClient удален, этот проект был прекращено.

Однако есть официальный порт Android Apache HttpClient v4.3

Android API 22 и старше должны использовать Apache HttpClient v4.3

dependencies {
         compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' 
}

Android API 23 и более новый должны использовать пакеты Apache HttpClient для Android поддерживаемые Marek Sebera

dependencies {
     compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1' 
}

Информация взята из Apache.org

Ответ 2

Документация HttpClient указывает вам в правильном направлении:

org.apache.http.client.HttpClient:

Этот интерфейс устарел на уровне API 22. Вместо этого используйте openConnection(). Посетите эту веб-страницу для более подробной информации.

означает, что вы должны переключиться на java.net.URL.openConnection().

Вот как вы могли это сделать:

java.net.URL url = new java.net.URL("http://some-server");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");

// read the response
System.out.println("Response Code: " + conn.getResponseCode());
InputStream in = new BufferedInputStream(conn.getInputStream());
String response = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
System.out.println(response);

Ответ 3

Вызов webservice httpclient заменить на httpurlconnection

мой код здесь

public static String getDataFromUrl(String url) {
        String result = null;
//        System.out.println("URL comes in jsonparser class is:  " + url);
        try {
            URL myurl=new URL(url);
            HttpURLConnection urlConnection = (HttpURLConnection) myurl
                    .openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setDoInput(true);
            urlConnection.connect();
            InputStream is=urlConnection.getInputStream();
            if (is != null) {
                StringBuilder sb = new StringBuilder();
                String line;
                try {
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(is));
                    while ((line = reader.readLine()) != null) {
                        sb.append(line);
                    }
                    reader.close();
                } finally {
                  is.close();
                }
                result = sb.toString();
            }
        }catch (Exception e){
            result=null;
        }
        return result;
    }