crear y Consumir (utilizar) WEB SERVICES (servicios web) en PHP. Ayuda - helpme

Iniciado por gladiador98, 12 Agosto 2011, 17:40 PM

0 Miembros y 2 Visitantes están viendo este tema.

gladiador98

[FONT="Century Gothic"] Hola a todos es un placer estar en este excelente foro.

Estoy trabajando en servicios de web (Web Services) en php y cree el servicio web, el cual salio bien, pero luego hice el programa que consume o utiliza ese servicio y cuando llega al call-> .... se queda en un bucle podría decir que infinito por que dura bastante minutos y no da ningún resultado.

servicio.php
<?
require_once("/AppServ/php5/lib/nusoap.php");

$ns = 'http://localhost/AppServ/www/';; //Espacio de nombres o sitio; sitio donde estará alojado el web service

$server = new soap_server();
$server->configureWSDL('CanadaTaxCalculator',$ns);
$server->wsdl->schemaTargetNamespace=$ns;
$server->register('CalculateOntarioTax',array('amount' => 'xsd:string'),array('return' => 'xsd:string'),$ns);

function CalculateOntarioTax($amount){

$taxcalc=$amount*.15;

return new soapval('return','xsd:string',$taxcalc);
}

$server->service($HTTP_RAW_POST_DATA);

?>


cliente.php

<?php

require_once("/AppServ/php5/lib/nusoap.php");

$wsdl='http://localhost/AppServ/www/servicio.php?wsdl';

$client=new nusoap_client($wsdl, 'wsdl');  
$param=array('amount'=>'15.00',);  

$response= $client->call('CalculateOntarioTax', $param);

echo "<pre>";
print_r($response);
echo "</pre>";

?>



Pienso que esta buscando la dirección correspondiente o no se que otra cosa esta haciendo.  Busque en tutoriales, videos e investigue con varios compañeros y me dijeron que es necesario modificar el httpd.conf del apache, pero no se como hacer los cambios correspondientes para que el consumir el servicio sirva.

Les pido el favor me ayude   ;D

[/FONT]

[u]nsigned

Código (php) [Seleccionar]
$taxcalc=$amount*.15;

Tenes un eror de sitaxis, el punto qe esta ente el '*' y el '15' especificamente  :xD

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

gladiador98

compañero, si tienes razón y gracias por su aporte.  Ahora bien corregí ese error para servicio.php pero al correr o ejecutar cliente.php sigue con el mismo problema se queda en un bucle y no da ningún resultado.

Que debo hacer?

gladiador98

 :-\
compañeros por favor les pido una ayudita para poder resolver mi pequeño problema.

En sí no encuentra el espacio de nombres en el servicio que debo hacer para que el cliente.php me envuentre el servicio?

espero sus grandes aportes

WHK

Tienes otro error de sintaxis:
$param=array('amount'=>'15.00',);
un array no puede terminar con una coma sola sin contenido.

Lo que puedes hacer es escribir un echo 'x';exit; linea por linea y ver hasta donde se ejecuta y hasta donde no se ejecuta y verás que función es la que te da problemas.

Dale un vistazo al log de errores de php, talves el servidor te está generando errores y el cliente no está preparado para recibir tales datos y por eso se está pegando.

Tienes activado el mostrar errores con error_reporting?, has intentado usar xampp?

Además ten cuidado porque el cliente correctamente escribe <?php pero el servidor comienza con <? y hay que recordar que ese no es un estandard de php, solo funciona cuando configuras php para que tome esos tags cortos pero no es el oficial. Solo en algunos servidores interpreta.

Has intentado visualizar servicio.php desde tu explorador?... te sale en blanco?, pues vee el código fuente, lo mas probable es que veas el código php como comentarios de color rosado, si es así es porque el servidor web no está interpretando el código, lo trata como un simple archivo de texto porque comienza con <? en ves de <?php, muchas veces pasa.

gladiador98

Gracias por su aporte WHK

Ya corregí el error del array, <? por <?php en servicio.php, pero en cliente.php se me ejecuta hasta el call y luego nada.

Yo utilizo zend Studio.  No se como activar error_reporting? y no he utilizado xampp, solo instalé el appserver 2.5.10.


Cuando corro directamente desde el explorador la dirección http://localhost/servicio.php me sale:


CanadaTaxCalculator

View the WSDL for the service. Click on an operation name to view it's details

                    CalculateOntarioTax

pero cuando lo corro con la dirección http://localhost/AppServ/www/servicio.php me sale un error......"La URL solicitada / AppServ / www / "; no se encontró en este servidor"


Sin embargo, pregunto que error podría tener en servicio.php? 

WHK

no puedes tener ambos apps instalados, si inatalas xampp debes desinstalar el otro porque no pueden compartir los servicios de proceso del apache, mysql, etc.

Con el error reporting saldrás de todas tus dudas.

gladiador98

WHK
Disculpa no haber escrito antes pero un virus ataco mi computadora y me toco formatear el disco

Pero volviendo al tema.  yo tengo apache.  appserve 2.5.10

y dime que es error_reporting? y donde puedo encontrarlo?

gladiador98

Yo utilizo windows seven y no se si para que funcione web services en php debe ser Windows XP????

por que para el seven se utiliza el ASP .net ???

[u]nsigned

1) No tiene nada que ver, PHP funcionaperfectamente en Windows XP,  Vista , Server 2003/8, Seven..etc, y en muchos isstemas operativos mas.

2) ASP.net es otro lenguaje de programacion web del lado del cliente, al igual que PHP. Y como ya dije para proveer 'Web Service' podes usar ASP.net como PHP (personalmente te recomiendo este ultimo).

error_reporting son los errores que te arroja el interprete de PHP cuando algo no anda bien...pueden ser ERRORES FATALES o simples WARNINGS (alertas).

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!