volley studio example ejemplo android http-post

studio - Clases HTTP en desuso Android lollipop 5.1



volley android (3)

¿Qué hay de usar Volley ? Parece una muy buena elección sobre URLConnection. Y tiene muchos beneficios en la puesta en cola de las solicitudes.

Las clases org.apache.http y la clase AndroidHttpClient han quedado en desuso en Android 5.1. Estas clases ya no se mantienen y debe migrar cualquier código de aplicación utilizando estas API a las clases de URLConnection tan pronto como sea posible.

https://developer.android.com/about/versions/android-5.1.html#http

Se ha recomendado cambiar a las clases de conexión rápida. No se ha documentado lo suficiente exactamente cómo realizar la llamada posterior desde la aplicación.

Actualmente estoy usando este

public void postData() { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php"); try { // Add your data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair(2); nameValuePairs.add(new BasicNameValuePair("id", "12345")); nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } }

¿Cómo puedo hacerlo usando UrlConnections?


Pensé en compartir mi código usando HttpUrlConnection

public String performPostCall(String requestURL, HashMap<String, String> postDataParams) { URL url; String response = ""; try { url = new URL(requestURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(15000); conn.setConnectTimeout(15000); conn.setRequestMethod("POST"); conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(os, "UTF-8")); writer.write(getPostDataString(postDataParams)); writer.flush(); writer.close(); os.close(); int responseCode=conn.getResponseCode(); if (responseCode == HttpsURLConnection.HTTP_OK) { String line; BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line=br.readLine()) != null) { response+=line; } } else { response=""; } } catch (Exception e) { e.printStackTrace(); } return response; }

..........

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException{ StringBuilder result = new StringBuilder(); boolean first = true; for(Map.Entry<String, String> entry : params.entrySet()){ if (first) first = false; else result.append("&"); result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); result.append("="); result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); } return result.toString(); }


Utilice este httpmime-4.1-beta1.jar Intente este código: -

String url = "http://www.yoursite.com/script.php"; HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); HttpPost postMethod = new HttpPost(url); MultipartEntity entity = new MultipartEntity(); try { entity.addPart("id", new StringBody("123")); entity.addPart("stringdata", new StringBody("AndDev is Cool!")); postMethod.setEntity(entity); HttpResponse response; response = client.execute(postMethod); String result = EntityUtils.toString(response.getEntity()); JSONArray ja = new JSONArray(result); // ITERATE THROUGH AND RETRIEVE CLUB FIELDS int n = ja.length(); for (int i = 0; i < n; i++) { // GET INDIVIDUAL JSON OBJECT FROM JSON ARRAYJSONObject jo = ja.getJSONObject(i); // RETRIEVE EACH JSON OBJECT''S FIELDS String status = jo.getString("status"); // Log.e("status",status); } } catch (Exception e) { e.printStackTrace(); }