Que cliente es mejor HttpURLConnection o HttpClient en android?

Estoy totalmente confundido que uno es mejor para llamar php webservice usando Restful Protocol.I hizo Usó tanto API (HttpClient y HttpURLConnection) para llamar a webservice.

Qué ocurre cuando se llama a un servicio web utilizando HttpClient

  • En Froyo su funcionamiento perfectamente (en localhost y servidor).
  • En JellyBean trabajando, pero después de un tiempo se ha ido, entonces no funciona
  • HttpClient está funcionando bien en localhost pero problema con la llamada werbservice en el servidor.

Qué ocurre cuando se llama a un servicio web mediante HttpURLConnection

  • En Froyo no funciona correctamente (en localhost)
  • El segundo punto es el mismo que el segundo punto de HttpClient
  • No puedo redirigir la página php webservice a otra página php.

Cuando llamo a webservice abc.php (en localhost y servidor) y desde aquí redirijo a otra página como xyz.php. Desde xyz.php realmente devolver datos al proyecto android en forma json, pero lo que sucede cuando uso HttpClient está funcionando bien, pero esta redirección no funciona con HttpURLConnection.

Código HttpClient

//calling the webservice using AsyncTask public String makeHttpReqToSrvr(String url,String requestType,List<NameValuePair> params) { HttpEntity httpEntity=null; HttpResponse httpResp = null; try { if (requestType == "GET") { //connection time out HttpParams httpParameters = new BasicHttpParams(); int timeout1 = 1000*8; int timeout2 = 1000*8; HttpConnectionParams.setConnectionTimeout(httpParameters, timeout1); HttpConnectionParams.setSoTimeout(httpParameters, timeout2); HttpClient httpClient = new DefaultHttpClient(httpParameters); String paramString =URLEncodedUtils.format(params, "utf-8"); HttpGet httpGet = new HttpGet(url+"?"+paramString); httpResp = httpClient.execute(httpGet); httpEntity = httpResp.getEntity(); } if (requestType == "POST") { // connection time out HttpParams httpParameters = new BasicHttpParams(); int timeout1 = 1000*8; int timeout2 = 1000*8; HttpConnectionParams.setConnectionTimeout(httpParameters, timeout1); HttpConnectionParams.setSoTimeout(httpParameters, timeout2); HttpClient httpClient = new DefaultHttpClient(httpParameters); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); httpResp = httpClient.execute(httpPost); httpEntity = httpResp.getEntity(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // -- End and Start read the data using bufferreader try { if(httpEntity != null) json = EntityUtils.toString(httpEntity); json = strBuilder.toString(); Log.v("JSON", "data"+json); } catch (Exception e) { e.printStackTrace(); } return json; } 

Código de HttpURLConnection

 public String makeHttpReqToSrvr(String url,String requestType,List<NameValuePair> params) { try { URL urlPath= null; String paramString = URLEncodedUtils.format(params, "utf-8"); if (requestType == "GET") { urlPath = new URL(url+"?"+paramString); } if (requestType == "POST") { urlPath = new URL(url); } conn = (HttpURLConnection) urlPath.openConnection(); conn.setReadTimeout(10000); conn.setConnectTimeout(15000); conn.setDoInput(true); conn.setDoOutput(true); if (requestType == "GET") { conn.setRequestMethod("GET"); } if (requestType == "POST") { conn.setRequestMethod("POST"); } //send the data to the server using post dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(paramString); dos.flush(); // Starts the query conn.connect(); int response = conn.getResponseCode(); is = conn.getInputStream(); // Convert the InputStream into a string json = readIt(is); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); dos.close(); conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return json; 

}
Por favor cualquier persona me sugiere si cualquier incorrecto con código antedicho y me dice la manera perfecta de llamar el webservice. Traté mucho, pero no lograr mi objetivo. Si usted no entiende por encima de la pregunta por favor pregúnteme.

El cliente HTTP de Apache tiene menos errores en Eclair y Froyo. Es la mejor opción para estos lanzamientos.

Google recomienda usar HttpURLConnection para aplicaciones dirigidas a Gingerbread y superior Antes de Froyo, HttpURLConnection tenía algunos errores frustrantes. Entonces qué pasa con Froyo. Mis aplicaciones funcionan en froyo y versoin más alto.

¿Qué cliente es mejor?

Cualquier ayuda será de gran utilidad. Gracias.

Puedes probar OKHTTP desde Square. Echa un vistazo a la página github aquí .

HttpUrlConnection no es bueno según lo dicho por el ingeniero de Google androide en las conferencias 2010 IO. Según ellos, esto crea un efecto adverso en la red. Ref: http://www.youtube.com/watch?v=xHXn3Kg2IQE

Utilice httpclient o Androidhttpclient

La mejor de las suertes

Obviamente, Google cambió de opinión .

HttpClient y AndroidHttpClient sólo deben utilizarse para FROYO y anteriores.

Comenzando con GINGERBREAD se recomienda utilizar HttpUrlConnection .

Seguí su recomendación y después de un tiempo muy corto de usar HUC (aka HttpUrlConnection) nativa, escribí una pequeña biblioteca (~ 12kb jar) que es mucho más fácil de usar.

La biblioteca se llama DavidWebb y allí puedes encontrar muchos enlaces a otras bibliotecas HTTP / REST especialmente para Android.

  • WebView deshacerse de doble toque zoom.
  • Retofit2 error java.io.EOFException: Fin de la entrada en la línea 1 columna 1
  • ¿Por qué utilizar sqlite Database en Android?
  • Problema con el zoom de texto de WebView en Android
  • ¿Cómo se puede pasar JSON a AngularJS en la vista web de Android?
  • Cookies de Android para la dirección IP
  • Google ya no permite el uso de WebView. ¿Cuáles son las alternativas?
  • Cargar HTML en la vista web en Android?
  • Que puede reemplazar la función capturePicture
  • Cuadro de texto oculto debajo del teclado en la vista web de Android
  • ¿Son las aplicaciones IOS y Android con Webview sólo consideradas híbridas o aplicaciones Web?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.