Java

Realizar una petición POST en Java

En este tutorial aprenderemos a realizar una petición POST en Java, esto nos puede ser de gran utilidad para hacer que nuestra aplicación se pueda comunicar con un web service.
Realizar una petición POST puede ser un poco más complicado que realizar una petición GET, debido a que los parámetros en una petición POST no se pueden pasar por la URL.

¿Cómo realizar una petición POST en Java?

Para realizar esta tarea vamos a crear una función estática llamada send, la cual va a ser la encargada de enviar la petición utilizando los objetos URL y HttpURLConnection como se muestra en el siguiente ejemplo:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.LinkedHashMap;
import java.util.Map;

public class Main {

	public static void send() throws IOException {
		URL url = new URL("http://localhost/post.php");
		Map<String, Object> params = new LinkedHashMap<>();

		params.put("parametro", "ProgramaciónExtrema.com");

		StringBuilder postData = new StringBuilder();
		for (Map.Entry<String, Object> param : params.entrySet()) {
			if (postData.length() != 0)
				postData.append('&');
			postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
			postData.append('=');
			postData.append(URLEncoder.encode(String.valueOf(param.getValue()),
					"UTF-8"));
		}
		byte[] postDataBytes = postData.toString().getBytes("UTF-8");

		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setRequestMethod("POST");
		conn.setRequestProperty("Content-Type",
				"application/x-www-form-urlencoded");
		conn.setRequestProperty("Content-Length",
				String.valueOf(postDataBytes.length));
		conn.setDoOutput(true);
		conn.getOutputStream().write(postDataBytes);

		Reader in = new BufferedReader(new InputStreamReader(
				conn.getInputStream(), "UTF-8"));
		for (int c = in.read(); c != -1; c = in.read())
			System.out.print((char) c);
	}

	public static void main(String[] args) {
		try {
			send();
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
	}

}

En el ejemplo anterior la petición POST se dirige a un archivo llamado post.php con el siguiente contenido.

<?php
  echo 'El valor del parámetro es ' . $_POST['parametro'];
?>

Al ejecutar el ejemplo el resultado sería “El valor del parámetro es ProgramaciónExtrema.com”.

Bueno gente, hemos llegado al final de este tutorial, espero que les sea de gran utilidad y ante cualquier problema no duden en dejar un comentario.

Compartilo en
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestEmail this to someone

AboutJosé Di Meglio

Apasionado de la tecnología y programación. Aportando información gratuita sobre el mundo de la informática.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *