none
Servicio Web NuSOAP y Aplicacion WPF RRS feed

  • Pregunta

  • Buenas noches, tengo un problema con un servicio web. El problema que en dicho servicio tengo dos metodos, en principio, bien echos y registrados por que cuando voy a la direccion http://app.nusegal.com/Nusegal/Pacientes.php me aparecen los dos metodos:

    - obtenerPacientes

    - obtenerPacientesByCodigo

    El problema es que cuando añado la referencia de servicio desde Visual Studio no me aparecen los dos metodos. A la referencia la llamo de la siguiente manera

    proxy.Paciente datPacientes = new proxy.Paciente();

    Pero cuando despliego datPacientes no me aparecen los metodos....

    Alguna ayuda???

    Gracias de antemano!!

    lunes, 10 de septiembre de 2012 20:49

Todas las respuestas

  • mm pero se llama proxy la clase que crea el web reference ? me suena raro que le haya puesto ese nombre

    si como visualizas aqui imagen

    puedes ver el wsdl, el .cs y el .disco asociados a la referencia web, en el cs que clases se crearon?

    porque puede que lo que estes creando sea la instancia de la entidad que retorna el servicio por eso Paciente pero no sea el servicio en si mismo

    sino qu este es otra clase distinta

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 11 de septiembre de 2012 4:42
  • Gracias por contestar Leandro te adjunto una imagen con la referencia:

    El archivo .disco no lo tengo por ninguna lado....

    El archivo .cs (Reference.cs) tiene cuatro clases:

    - Pacientes

    - PacientesWSDL2

    - obtenerPacientesCompletedEventArgs()

    - obtenerPacientesByCodigoCompletedEventArgs()

    Si que me he dado cuenta de que si quiero llamar a esos metodos, tengo que hacerlo por medio de la clase PacientesWSDL2, pero al llamar al metodo obtenerPacientes(), siempre me trae null.

    Adjunto el codigo del servicio:

    Pacientes.php (Clase Servidor)

    <?php
    	// Downloaded Nusoap file
     	require_once("../lib/nusoap.php");
     	// Including the created php function file
     	require_once("../Nusegal/pacientesclass.php");
    	
    	$ns="http://app.nusegal.com/Nusegal/";
    	$server = new soap_server();
    	//$server->configureWSDL('ObtenerPacientes',$ns);
    	$server->configureWSDL("PacienteWSDL2");
     	$server->wsdl->schemaTargetNamespace=$ns;
     
    	// Creating Complex type for out put (only for single record)
    	
     	$server->wsdl->addComplexType('Paciente',
     				'complexType','struct', 'all', '',
     				array( 'ID' => array('name' => 'id', 'type' => 'xsd:int'),
     					   'Nombre' => array('name' => 'Nombre','type' => 'xsd:string'),
     					   'Apellidos' => array('name' => 'Apellido1','type' => 'xsd:string'),
     					   'Direccion' => array('name' => 'Direccion','type' => 'xsd:string'),
     					   'CodPostal' => array('name' => 'CodPostal','type' => 'xsd:string')
     				));
     
    	
    	$server->wsdl->addComplexType(
     				'PacienteArray',
     				'complexType',
     				'array',
     				'',
     				'SOAP-ENC:Array',
     				array(),
     				array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Paciente[]')),
     				'tns:Paciente'
     				);
    	$server->register('obtenerPacientes',
     			array('soapObjects' => 'tns:PacienteArray'),
    			array('return' => 'tns:PacienteArray'),$ns,false,'rpc',false,"Devuelve Todos los pacientes");
     
     	$server->register('obtenerPacientesByCodigo',
     			array('codigo' => 'xsd:int'),
    			array('return' => 'xsd:array'),$ns,false,'rpc',false,"Devuelve un Paciente filtrado por codigo");
     
     	$pacienteClass = new Pacientes; // Object from userclass.php
    	// Main function (Registered function)
     	function obtenerPacientes()
     	{
     		return $pacienteClass->getObtenerPacientes();
     	}
     
     	function obtenerPacientesByID($codigo)
     	{
    		 return $pacienteClass->getObtenerPacientesByCodigo($codigo);
     	}
     
    	//=============
     	// Output return
     	//=============
    	// $HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
    	// $HTTP_RAW_POST_DATA = file_get_contents("php://input");
    	// $server->service($HTTP_RAW_POST_DATA);
    	// header('Content-Type: text/xml; charset=utf8'); 
    	// exit();
     	$server->service($HTTP_RAW_POST_DATA);
    ?>

    pacienteclass.php

    <?php
    include('conexion.php');
    class Pacientes
    	{
    		
    		function getObtenerPacientes()
    		{
    			mysql_connect('db430921755.db.1and1.com', 'dbo430921755', '***********') ;
    			mysql_select_db ('db430921755');
    			
    			//$this->getConexion();
     			$Query = "SELECT * FROM Pacientes";
     			$result = mysql_query($Query) or die(" Error al conectar con la tabla");
     
    			if(!$result) 
    			{
     				die(" Error al conectar con la tabla ");
     			}
     			$cnt = 0;
     			$UserResultArray= array();
     			while ($UserResult = mysql_fetch_assoc($result))
     			{
    				// Result Array
     				$UserResultArray[$cnt] = array(
     								'ID' => $UserResult["id"],
     								'Nombre' => $UserResult["Nombre"],
     								'Apellidos' => $UserResult["Apellido1"],
     								'Direccion' => $UserResult["Direccion"],
     								'CodPostal' => $UserResult["CodPostal"]);
     
    				$cnt = $cnt + 1;
     			}
     
    			return $UserResultArray;
     		}
    		
    		function getObtenerPacientesByCodigo($codigo)
    		{
    			mysql_connect('db430921755.db.1and1.com', 'dbo430921755', '***********') ;
    			mysql_select_db ('db430921755');
    			//$this->getConexion();
     			$Query = "SELECT * FROM Pacientes where id=$codigo";
     			$result = mysql_query($Query) or die(" Error al conectar con la tabla");
     
    			if(!$result) 
    			{
     				die(" Error al conectar con la tabla ");
     			}
     			$cnt = 0;
     			$UserResultArray= array();
     			while ($UserResult = mysql_fetch_assoc($result))
     			{
    				// Result Array
     				$UserResultArray[$cnt] = array(
     								'ID' => $UserResult["id"],
     								'Nombre' => $UserResult["Nombre"],
     								'Apellidos' => $UserResult["Apellido1"],
     								'Direccion' => $UserResult["Direccion"],
     								'CodPostal' => $UserResult["CodPostal"]);
     
    				$cnt = $cnt + 1;
     			}
     
    			return $UserResultArray;
    		}
    	}
    ?>

    ClientPacientes.php (Cliente NuSOAP)

    <?php
    	require_once('../lib/nusoap.php');
     	$soapclient = new soapclient('http://app.nusegal.com/Nusegal/Pacientes.php?Pacientes_wsdl',array('trace' => 1));
     	$client->debug_flag=true;
     	//$err = $client->getError();
    	$param = array("ID"=>1);
     	//$result=$client->call("getObtenerPacientes",$param);
    	$result=$client->getObtenerPacientes($param);
     	//header("Content-Type: text/xml\r\n");
    	header('Content-Type: text/xml; charset=utf8'); 
    	echo $soapclient->responseData;
     
    ?>

    Esto es todo lo que tengo de codigo (por ahora) en PHP. Lo mismo esta mal creado el servicio.

    Sin mas, un saludo.



    • Editado osmagarci miércoles, 9 de octubre de 2013 11:38
    martes, 11 de septiembre de 2012 8:04