A continuación veremos un ejemplo sencillo de como realizar esta comunicación.
En primer lugar preparamos los datos que vamos a enviar y los convertimos a formato JSON mediante la librería Gson de Google:
Map <String,String> datosEnv=new HashMap<String,String>();
datosEnv.put("nombre", "pepe");
datosEnv.put("apellido","Gonzalez");
datosEnv.put("apellido","Gonzalez");
//Creamos la cadena con los datos en formato JSON
Gson gson = new Gson();
String jsonOutput = gson.toJson(datosEnv);
A continuación estableceremos conexion con el servidor y le enviaremos los datos por Post y recibiremos la respuesta por parte del servidor:
try{
//Usamos URLencode para poder enviar la cadena
jsonOutput = URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(jsonOutput, "UTF-8");
//Establecemos la conexion y enviamos los datos
URL url=new URL("http://localhost/serv/index.php");
URLConnection con = (URLConnection) url.openConnection();
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(jsonOutput);
wr.flush();
//Recibimos los datos
BufferedReader recv = new BufferedReader(new InputStreamReader(con.getInputStream()));
//Los mostramos por pantalla
String s=recv.readLine();
while(s!=null){
System.out.println(s);
s=recv.readLine();
}
}catch (Exception e){
System.out.println(e.getMessage());
}
//Usamos URLencode para poder enviar la cadena
jsonOutput = URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(jsonOutput, "UTF-8");
//Establecemos la conexion y enviamos los datos
URL url=new URL("http://localhost/serv/index.php");
URLConnection con = (URLConnection) url.openConnection();
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(jsonOutput);
wr.flush();
//Recibimos los datos
BufferedReader recv = new BufferedReader(new InputStreamReader(con.getInputStream()));
//Los mostramos por pantalla
String s=recv.readLine();
while(s!=null){
System.out.println(s);
s=recv.readLine();
}
}catch (Exception e){
System.out.println(e.getMessage());
}
Bien ya tenemos listo el código de la parte cliente , ahora veamos como tratamos los datos en el servidor y generamos una respuesta.Para ello debemos tener el siguiente código en el archivo index.php
<?php
//Decodificamos los datos
$se=json_decode(stripslashes($_POST["key"]));
//Mostramos los datos
echo"Soy el servidor , te envio los siguientes datos:\n";
echo "Nombre: ".$se->nombre."\n";
echo "Apellido: ".$se->apellido."\n";
?>
//Decodificamos los datos
$se=json_decode(stripslashes($_POST["key"]));
//Mostramos los datos
echo"Soy el servidor , te envio los siguientes datos:\n";
echo "Nombre: ".$se->nombre."\n";
echo "Apellido: ".$se->apellido."\n";
?>
Destacar que en la parte servidor todo lo que genere código para ser visualizado será enviado a la parte cliente.En este caso la parte cliente recibirá lo siguiente:
Soy el servidor , te envio los siguientes datos:
Nombre: pepe
Apellido: Gonzalez
Nombre: pepe
Apellido: Gonzalez
Aquí tenéis el código completo de la parte cliente para que podáis probarlo:
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author Lakatos
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
estableceComunicacion();
}
private static void estableceComunicacion() {
Map <String,String> datosEnv=new HashMap<String,String>();
datosEnv.put("nombre","pepe");
datosEnv.put("apellido","Gonzalez");
Gson gson = new Gson();
String jsonOutput = gson.toJson(datosEnv);
try{
//Usamos URLencode para poder enviar la cadena
jsonOutput = URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(jsonOutput, "UTF-8");
//Establecemos la conexion y enviamos los datos
URL url=new URL("http://localhost/serv/index.php");
URLConnection con = (URLConnection) url.openConnection();
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(jsonOutput);
wr.flush();
//Recibimos los datos
BufferedReader recv = new BufferedReader(new InputStreamReader(con.getInputStream()));
//Los mostramos por pantalla
String s=recv.readLine();
while(s!=null){
System.out.println(s);
s=recv.readLine();
}
}catch (Exception e){
System.out.println(e.getMessage());
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author Lakatos
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
estableceComunicacion();
}
private static void estableceComunicacion() {
Map <String,String> datosEnv=new HashMap<String,String>();
datosEnv.put("nombre","pepe");
datosEnv.put("apellido","Gonzalez");
Gson gson = new Gson();
String jsonOutput = gson.toJson(datosEnv);
try{
//Usamos URLencode para poder enviar la cadena
jsonOutput = URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(jsonOutput, "UTF-8");
//Establecemos la conexion y enviamos los datos
URL url=new URL("http://localhost/serv/index.php");
URLConnection con = (URLConnection) url.openConnection();
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(jsonOutput);
wr.flush();
//Recibimos los datos
BufferedReader recv = new BufferedReader(new InputStreamReader(con.getInputStream()));
//Los mostramos por pantalla
String s=recv.readLine();
while(s!=null){
System.out.println(s);
s=recv.readLine();
}
}catch (Exception e){
System.out.println(e.getMessage());
}
}
}
Espero que os sirva de ayuda.
Un saludo.
Como lo ejecuto si tengo los dos proyectos en diferentes IDES y servidores por supuesto?
ResponderEliminar