[Android] Inviare una richiesta HTTP Post tramite HttpClient

Android Code

[Android] Inviare una richiesta HTTP Post tramite HttpClient

0

Ecco un semplice snippet di codice che vi permetterà di effettuare delle richieste http POST. Vediamo subito il codice con commento:

public void sendPostRequest()
{
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost("https://informaticalab.com");

		// Imposto le coppie attributo-valore:
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("email", "[email protected]"));
		params.add(new BasicNameValuePair("password", "myFancyPassword"));
		try
		{
			
			//Allego gli entity alla richiesta post:
			httpPost.setEntity(new UrlEncodedFormEntity(params));
			
			//Eseguo la richiesta:
			Log.i(TAG, "Eseguo la richiesta: ");
			HttpResponse response = httpClient.execute(httpPost);
			
			//Loggo la risposta:
			Log.i(TAG, EntityUtils.toString(response.getEntity()));

		}
		catch (UnsupportedEncodingException e)
		{
			// log exception
			e.printStackTrace();
		}

		catch (ClientProtocolException e)
		{
			// Log exception
			e.printStackTrace();
		}
		catch (IOException e)
		{
			// Log exception
			e.printStackTrace();
		}
		return null;

	}
}

UrlEncodedFromEntity può lanciare l’ eccezione UnsupportedEncodingException. Per avere il corpo della risposta alla nostra richiesta, dovremo fare response.getEntity().
Usando poi il metodo statico EntityUtils.toString() possiamo avere il testo sottoforma di stringa.

Per effettuare una prova, vi ricordo che dovrete prima impostare all’ interno dell’ Android Manifest il permesso:

<uses-permission android:name="android.permission.INTERNET" />

Inoltre, dovrete creare un’altro thread per poter effettuare connessioni ad internet (altrimenti la ui dovrebbe rimanere bloccata finchè la richiesta non riceve risposta).
Usare un

AsyncTask<Void,Void,Void>

dovrebbe fare al caso vostro 😉

About the Author

Federico PonziStudente, Webmaster ed appassionato di tutto ciò che è informatico con una spruzzata di scienza.View all posts by Federico Ponzi

Leave a Reply