Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Enviar JSON de Java a PHP

Estas en el tema de Enviar JSON de Java a PHP en el foro de Java en Foros del Web. Hola! Estoy teniendo dificultades a la hora de enviar un json y que lo reciba php. Tengo el siguiente código en java: Código: ArrayList<Pelicula> listaP ...
  #1 (permalink)  
Antiguo 15/03/2014, 06:45
Avatar de Kev_fva  
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Enviar JSON de Java a PHP

Hola!

Estoy teniendo dificultades a la hora de enviar un json y que lo reciba php.

Tengo el siguiente código en java:

Código:
ArrayList<Pelicula> listaP = txtToMovie(path);
Gson gson = new Gson();
String jsonOutput = gson.toJson(listaP);
Con lo cual jsonOutPut tiene esta forma:
Código:
[{"nom":"300","genere":"aventuras","duracio":"117 minutos","director":"Zack Snyder"},{"nom":"Black Hawk Derribado","genere":"belico","duracio":"144 min","director":"Ridley Scott"}]
He estado probando con la clase URL pero no consigo enviar el json y que el php lo reciba correctamente.

Alguna sugerencia?

Muchas gracias!
  #2 (permalink)  
Antiguo 15/03/2014, 06:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Enviar JSON de Java a PHP

Hola:

El código que has puesto es cómo convertir tu lista java a JSON y con eso no tienes problemas. ¿Por qué no pones el código con el que sí tienes problemas? La clase URL debería valerte.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 15/03/2014, 07:54
Avatar de Kev_fva  
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Enviar JSON de Java a PHP

Hola de nuevo!

Uso esto para enviar el json

Código:
try{
			//Establecemos la conexion y enviamos los datos
			URL url=new URL("http://kevinfva.esy.es/deco.php?result="+jsonOutput);
			URLConnection conn = url.openConnection();

			// respuesta
			BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			while ((line = rd.readLine()) != null) {
				System.out.println(line);
			}
			rd.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
donde deco.php es:

Código:
<?php
	$result = $_GET["result"];
	$obj = json_decode($result);
	echo $obj
?>
He de decir que soy nuevo en el lenguaje php, estoy empezando
  #4 (permalink)  
Antiguo 15/03/2014, 08:59
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Enviar JSON de Java a PHP

No indicas cual es el problema (salvo que php no lo lee correctamente) o porqué dices que no lo lee correctamente.

Lo que quizás pueda estar pasando es que una url como esta

"http://://kevinfva.esy.es/deco.php?result=[{"nom":"300","genere":"...

puede no ser correcta por los caracteres [,{,:,"... del JSON que no son válidos para una URL. Prueba a codificarlos como URL

Código Java:
Ver original
  1. jsonEncoded = URLEncoder.encode(jsonOutput);
  2. URL url=new URL("http://kevinfva.esy.es/deco.php?result="+jsonEncoded);

De todas formas, un json puede ser demasiado largo y con demasiados caracteres no válidos como para enviarlo así, quizás sería mejor si lo hicieras por POST http://www.xyzws.com/Javafaq/how-to-...web-server/139

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 19/03/2014, 14:01
Avatar de Kev_fva  
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Enviar JSON de Java a PHP

Muchas gracias por tu ayuda y perdona por tardar en contestar.

He conseguido que funcione la conexión entre Java y PHP, lo que aun sigo teniendo un pequeño problema :(

Si le envió al php lo siguiente:

Código:
{"nom":"300","genere":"aventuras","duracio":"117 minutos","director":"Zack Snyder"}
Me devuelve:
Código:
Nom: 300
Genere: aventuras
Duracion: 117 minutos
Director: Zack Snyder
Hasta ahí todo perfecto, el problema viene aquí:

Código:
[{"nom":"300","genere":"aventuras","duracio":"117 minutos","director":"Zack Snyder"},{"nom":"Black Hawk Derribado","genere":"belico","duracio":"144 min","director":"Ridley Scott"}]
No me devuelve nada. Si le paso la información de las películas una por una funciona todo perfecto.

PHP
Código:
<?php
	$se=json_decode(stripslashes($_POST["key"]));
	echo "Nom: ".$se->nom."\n";
	echo "Genere: ".$se->genere."\n";
	echo "Duracio: ".$se->duracio."\n";
	echo "Director: ".$se->director."\n";

	echo 'Fi';
?>
SOLUCION


Código:
<?php
	$array = json_decode($_POST["key"]);
	
	for($i=0;$i<count($array);$i++){
		echo "Nom: ".$array[$i]->nom."\n";
		echo "Genere: ".$array[$i]->genere."\n";
		echo "Duracion: ".$array[$i]->duracio."\n";
		echo "Director: ".$array[$i]->director."\n";

}
?>

Última edición por Kev_fva; 19/03/2014 a las 14:50

Etiquetas: clase, json, php, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:33.