XmlRpc en Java y en PHP

NeB1

Buenasss,

Tengo montado un servidor XmlRpc en Php y un cliente en Java, y vá todo perfecto, excepto al enviar los parametros de la funcion, es decir, que Java ejecuta una de las funciones del servidor, siempre y cuando no requiera parámetros para su correcto funcionamiento, si nos, los envía vacíos... Sin embargo probé ya hace tiempo ese servidor en VB.net y funcionaba correctamente.

Es esto normal?

En java hago lo siguiente:


    try{
        Vector Params = new Vector();
        Params.addElement("3");
        config.setServerURL(new URL("http://localhost/mBlue/xmlRpcServer.php"));
        client.setConfig(config);

        String modelos =(String) client.execute("test.getModelos", Params);
        System.out.println(modelos);

Y la función que llama es:


function getModelos ( $args ){
	switch($args[0]){
		case "0":
			return "0-LG213|1-LG4123|2-LG213M|3-LG320|4-LG420";
		break;
		case "1":
			return "0-One touch|1-Two touch|2-WTF|3-LG320|4-LG420";
		break;
		case "2":
			return "0-N10|1-N20|2-N30|3-N40";
		break;
		case "3":
			return "0-Magic";
		break;
		case "4":
			return "0-Blackmovil|1-Whiteberry";
		break;
		default:
			return "0-No se ha seleccionado".$args[0];
		break;
	}
}

Siempre devuelve "No se ha seleccionado". Contesta, pero no recibe el parametro por el que se guía el Switch.

Pd: Se puede saber que se está enviando? rollo como el firebug que ves los POSTS y los GETS? para saber si es que envia un xml malformado o algo...

Valeee... si le envio varios parámetros, lo envía correctamente, si envío 1, no funciona >.<

r2d2rigo

En efecto, tu dentro de tu funcion de PHP estas comprobando la primera posicion de un array ($args[0]). Si le envias un solo parametro, lo toma como un int/string/loquesea monodimensional, y te casca. Metele una comprobacion o algo.

NeB1

#2 eso también lo pensé anoche, pero es que si hago "return $args" enviando solo un parametro, o hago un casteo haciendo "return (string)$args;" me daba un error, por lo que dí por hecho que el protocolo xmlrpc solo aceptaba arrays como parámetros en las funciones.

además, si PHP hubiese considerado que $args, era un entero o un string, al hacer return $args[0] me hubiese devuelto, el primer dígito, o la primera letra, y no fué así.

Usuarios habituales

  • NeB1
  • r2d2rigo