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