Foros del Web » Programando para Internet » PHP »

Web services PHP con https

Estas en el tema de Web services PHP con https en el foro de PHP en Foros del Web. Buenas, Este es mi primer post, así que espero no estar "reposteando", o siendo reiterativo si es que esto ya fue preguntado y respondido. El ...
  #1 (permalink)  
Antiguo 16/07/2010, 13:15
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 14 años, 4 meses
Puntos: 1
Web services PHP con https

Buenas,

Este es mi primer post, así que espero no estar "reposteando", o siendo reiterativo si es que esto ya fue preguntado y respondido.

El problema que estoy teniendo es el siguiente.
Estoy intentando conectarme a un ws, cuyo protocolo es https utilizando lenguaje php. Ambos, cliente y servidor están escritos en este mismo lenguaje. Y sin embargo, no estoy siendo capaz de obtener la respuesta del servidor.

Para estos mismos webservices, existen servidores de prueba, los cuales con el mismo código pero cambiando nada más la url, funcionan perfectamente.

Hay algún requerimiento específico para hacer que los web services funcionen correctamente para php a través de https?

Por las dudas, que pudiera resultar de ayuda, mi servidor web es Apache.

Saludos y gracias de antemano!
  #2 (permalink)  
Antiguo 16/07/2010, 13:23
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 19 años, 2 meses
Puntos: 14
Respuesta: Web services PHP con https

Y cual es el problema? te tira error?.... explica un poco mas que ocurre..
__________________
Juegos
Juegos iphone
  #3 (permalink)  
Antiguo 19/07/2010, 08:17
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Web services PHP con https

Cita:
Iniciado por minkweb Ver Mensaje
Y cual es el problema? te tira error?.... explica un poco mas que ocurre..
Primero que nada, gracias por responder y disculpas por la falta de claridad o especifidad.

El problema es que sencillamente no devuelve nada, se queda cargando hasta cumplir el tiempo de espera por defecto de PHP para obtener respuesta (es decir, 60 segundos). Ese tiempo estoy seguro de que es bastante mayor, al que tendría que tomar obtener una respuesta, aunque de cualquier manera, cambié el parámetro desde php.ini y coloqué un tiempo mayor y la respuesta fue la misma.

Simplemente eso. Queda cargando hasta cumplir el tiempo de espera máximo de PHP, me como error "max time exceeded" y no devuelve nada.

Gracias y Saludos!
  #4 (permalink)  
Antiguo 19/07/2010, 08:32
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 14 años, 4 meses
Puntos: 55
Respuesta: Web services PHP con https

pero si puedes tambien coloca aqui el codigo que tu usas y el codigo de prueba que ellos dan que tu dices que funciona
  #5 (permalink)  
Antiguo 19/07/2010, 12:27
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 14 años, 4 meses
Puntos: 1
Cita:
Iniciado por johhan16 Ver Mensaje
pero si puedes tambien coloca aqui el codigo que tu usas y el codigo de prueba que ellos dan que tu dices que funciona
En realidad, dudo que el problema se relacione con el código específicamente, porque en los servidores de prueba se encuentra el mismo código que en los de producción. El problema surgió a partir del momento en que comenzamos a intentar obtener los mismos resultados, cambiando de http a https.

Por si acaso una de las funciónes que interviene en la consulta que realizo es la siguiente:

function registro_evento($empresa,$nrocel,$codevento,$pin)
{
global $ip;

$id=0;

if ($empresa=="calculo" && $nrocel!='' && $codevento!='')
{
$sql = "SELECT nro_abonado FROM ppv2_usuarios WHERE nro_cel='$nrocel' AND estado=1 LIMIT 1";
$consulta = mysql_query($sql);
if (mysql_num_rows($consulta))
{
$rs=mysql_fetch_array($consulta);
$nroabonado = $rs['nro_abonado'];

$sql = "INSERT INTO ppv2_eventos (id_usuario,nro_abonado,nro_cel,cod_evento,fecha,e stado,pin,canal,codigo) VALUES (0,$nroabonado,'$nrocel','$codevento',NOW(),0,'$pi n','SMS','')";
mysql_query($sql);
if (mysql_affected_rows()>0)
{
$id = mysql_insert_id();
$cod_error = "01";
$msg_error = "ok";
}
else
{
$cod_error = "99";
$msg_error = "error";
}
}
else
{
$cod_error = "99";
$msg_error = "error";
}
}
else
{
$cod_error = "99";
$msg_error = "error";
}
$xml = '<?xml version="1.0" encoding="ISO-8859-1" ?><PPV><id>'.$id.'</id><cod_error>'.$cod_error.'</cod_error><msg_error>'.$msg_error.'</msg_error></PPV>';
return $xml;
}

Mientras que el lugar dsd dnd llamo a la función es este:

include('connect.php');
include('SoapClient.php');
include('nusoap/lib/nusoap.php');

function get_response($ws, $params_sent)
{
$cliente = new SoapClientPrueba($ws);
$params = get_params($params_sent);
$response = $cliente->getClient()->execute($params);
return $response;
}

function get_params($params_sent)
{
$params = array('Usrid' => 'WEBNS', 'Percod' => '24');
foreach($params_sent as $key=>$param)
{
$params[$key] = $param;
}
return $params;
}

y la clase SoapClient propiamente dicha, es esta:

class SoapClientPrueba {
private $_client;

function SoapClientPrueba($ws){
//$client = new SoapClient('/*ak iría la url con https que no estoy autorizado a dar*/');
$this->_client = $client;
return $this;
}
public function getClient(){
return $this->_client;
}
public function execute($params)
{
$response = $this->getClient()->Execute($params);
return $response;
}
}

Los datos los paso desde get_response, adnd ya llegan prontos, para ser enviados a la clase Soap_Client que es la que construye el cliente.

La primer función es una de las usadas y funciona correctamente, para el caso de http.

Saludos, gracias!

Por favor si alguien tiene alguna idea, o se le ocurre alguna particularidad que pueda llegar a tener realizar una consulta a un WS por HTTPS, o si alguna vez tuvo que realizar una tarea parecida en PHP, agradezco se contacte.

Saludos!

Última edición por GatorV; 27/07/2010 a las 14:08

Etiquetas: apache, https, services, webservice
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 21:23.