HttpEntity está obsoleto no Android agora, qual é a alternativa?




httpurlconnection apache-httpclient-4.x (2)

Com o lançamento do Android 5.1, parece que todo o material http do Apache foi preterido. Olhar para a documentação é inútil; todos dizem

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

O que é bom na primeira vez que você o lê, mas quando TODAS as classes reprovadas dizem isso, isso não ajuda.

Enfim, quais são as alternativas para classes como HttpEntity , especificamente StringEntity e MultipartEntity ? Substituí BasicNameValuePair pela minha própria implementação da classe Pair<T, S> do Android, e parece que URLEncoder.encode é um bom substituto para URLEncodedUtils , mas não tenho certeza do que fazer com HttpEntity .

EDITAR

Decidi apenas reescrever o material de rede. Vou tentar usar Retrofit e OkHttp

EDITAR

Sério, dê uma olhada em mudar suas chamadas e outras coisas para Retrofit. Muito bacana. Estou feliz que eu fiz. Havia alguns obstáculos, mas é legal.


A documentação do HttpClient aponta você na direção certa:

org.apache.http.client.HttpClient :

Essa interface foi preterida no nível 22 da API. Em vez disso, use openConnection (). Por favor, visite esta página para mais detalhes.

significa que você deve mudar para java.net.URL.openConnection() .

Veja como você pode fazer isso:

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);

Chamar o serviço da web httpclient substituir por httpurlconnection

meu código aqui

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;
    }






apache-httpclient-4.x