Foros del Web » Programando para Internet » PHP »

Webservices con PHP

Estas en el tema de Webservices con PHP en el foro de PHP en Foros del Web. Antes que nada un saludo. No sé si alguien del foro haya trabajado más fondo con nuSOAP como herramienta para generar webservices con php. Desafortunadamente ...
  #1 (permalink)  
Antiguo 06/02/2007, 11:52
 
Fecha de Ingreso: octubre-2003
Ubicación: Veracruz, México
Mensajes: 169
Antigüedad: 20 años, 6 meses
Puntos: 0
Webservices con PHP

Antes que nada un saludo.

No sé si alguien del foro haya trabajado más fondo con nuSOAP como herramienta para generar webservices con php. Desafortunadamente existe muy poca información sobre este rubro.

Yo me encuentro con la problemática de querer utilizar ciertas clases que ya tengo modeladas porque forman parte de un sistema de consulta. En base a ello me di a la tarea de generar una clase que abstrayera toda la funcionalidad que deseo posea el webservice. Posteriormente cree el archivo que sería en si el webservice, aquel donde se utilizan los objetos de nuSOAP y pensaba únicamente instanciar la clase que había yo creado.

Sin embargo, el resultado fue un error que acontinuacion muestro:

Warning: Cannot modify header information - headers already sent by (output started at /usr/www/htdocs/proceda/clas/cConexion.php:57) in /usr/www/htdocs/proceda/ws/lib/nusoap.php on line 3281

Este es mi código:

Código PHP:
<?php
    
require_once("lib/nusoap.php");
    require_once(
"../clas/cWsGuardadoPedimento.php");
    
$ns="http://unixdev.reco/proceda/ws/";
    
$server = new Soap_Server();
    
$server->configureWSDL('wsGuardadoPedimento',$ns);
    
$server->wsdl->schemaTargetNamespace=$ns;

              
    
$server->register('procesarArchivo',
              array(
'sArch' => 'xsd:string','sFecha' =>'xsd:string'),
              array(
'return' => 'xsd:string'),
              
$ns);
    
    function 
procesarArchivo($sArch,$sFecha){
        
$oGuardPed = new cWsGuardadoPedimento($sArch,$sFecha);
        
$sRes=$oGuardPed->procesar();
        return new 
soapval('return','xsd:string',$sRes); 
    }

   
$server->service($HTTP_RAW_POST_DATA);
?>
Revisé varias veces asimismo intenté otras alternativas, y en el archivo donde se desa crear el webservice no permite requerir otro archivo aparte del nusoap.php.

La unica forma en la que logré darle la vuelta fue a través de un programa que corre en linea de comando cuya salida es capturada en el script donde se realiza el webservice.

Algo asi como:

wsMiWebService.php -> scMiWebService.php -> cWsMiWebService.php

Donde :

wsMiWebService.php : Contiene el llamado a la libreria nuSOAP y el llamado al resultado de la ejecucion del programa en linea de comando.

Su código es:

Código PHP:
<?php
    
require_once("lib/nusoap.php");
    
$ns="http://dominio.com/directorio/ws/";
    
$server = new Soap_Server();
    
$server->configureWSDL('wsMiWebService',$ns);
    
$server->wsdl->schemaTargetNamespace=$ns;

    
$server->register('procesarArchivo',
              array(
'sArch' => 'xsd:string','sFecha' =>'xsd:string'),
              array(
'return' => 'xsd:string'),
              
$ns);
    
    function 
procesarArchivo($sArch,$sFecha){
        
$sRes=shell_exec("php -f  /ruta/al/archivo/directorio/ws/scMiWebService.php $sArch '$sFecha'");
        return new 
soapval('return','xsd:string',$sRes); 
    }

   
$server->service($HTTP_RAW_POST_DATA);
?>
scMiWebService.php: Contiene en si la lógica que deseaba implementar en el archivo anterior.

cWsMiWebService.php : Contiene la descripción de la clasze con toda la funcionalidad del webservice

Como verán esto es darle muchas vueltas al punto, me gustaría saber si alguno de ustedes ya ha conseguido algo asi sin utilizar un archivo intermediario.

Espero comentarios de la comunidad y me gustaría lanzar de antemano la propuesta de poder eealizar en conjunto un tutorial en español para realizar webservices en PHP 5.

Saludos
  #2 (permalink)  
Antiguo 06/02/2007, 12:46
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Re: Webservices con PHP

Segun veo tu codigo no tiene nada de malo, pero al parecer cConexion.php esta enviando algo
  #3 (permalink)  
Antiguo 06/02/2007, 19:43
 
Fecha de Ingreso: octubre-2003
Ubicación: Veracruz, México
Mensajes: 169
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Webservices con PHP

erlingfiallos :

Efectivamente, el código no parece tener ningún detalle. cConexion.php también
está correcto, pues es el que se encuentran usando otros módulos y en ninguno marca el detalle.

Además como comente, probé requiriendo otros archivos y también marca ese detalle.

Tu tienes algún ejemplo donde requieras algun archivo y esté funcionando ? Algo asi como para que pudiese guiarme ?

De antemano gracias.
  #4 (permalink)  
Antiguo 06/02/2007, 21:39
Avatar de andre_cl  
Fecha de Ingreso: enero-2007
Ubicación: STGO - CHILE
Mensajes: 51
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Webservices con PHP

Por casualidad estas modificando los header ()? despues de imprimir algun resultado? es que el error sucede por eso, cuando utilizas header ("Location: url") despues del <HTML> tienes el mismo error que estas mostrando. Por ello revisa cuando estas modificando las cabeceras del webservices.
  #5 (permalink)  
Antiguo 06/02/2007, 22:28
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Re: Webservices con PHP

Pues tengo este.. quizas te puedas dar alguna idea.. aunque el problema debe de ser algo con uno de tus archivos que estan enviando algo.. ten cuidado y revisa muy bien la codificacion en que se guarda cada archivo.

Ejemplo de Webservice
  #6 (permalink)  
Antiguo 07/02/2007, 10:02
 
Fecha de Ingreso: octubre-2003
Ubicación: Veracruz, México
Mensajes: 169
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Webservices con PHP

Antes que nada les agradezco los comentarios.

Primero, les comentó que no utilizo ningún header a nivel de clases, por ello, deduzco que el problema no va por ahi, además pensando en ello intenté también colocar un ob_start() y ob_end_flush() antes de iniciar el bloque de los require, y marca el mismo error.

No he revisado a fondo lo que hace el archivo nusoap.php quizá dándome una vuelta por allí pueda descifrar algo.

En cuanto a tu ejemplo, erlingfiallos, es bastante bueno, sin embargo no haces uso de requerir algun otro archivo.

Nuevamente les agradezco el apoyo y sigo revisando.

Un saludo
  #7 (permalink)  
Antiguo 07/02/2007, 13:27
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Webservices con PHP

Talves tengas problemas que alguna linea, sea del include este imprimendo algo, un echo que se yo!.
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 03:33.