Foros del Web » Programando para Internet » PHP »

Respuesta a HTTP POST via cURL

Estas en el tema de Respuesta a HTTP POST via cURL en el foro de PHP en Foros del Web. Hola, Soy muy nuevo con esto del PHP y cURL. Estoy intentado enviar unas variables a un script PHP remoto y obtener su respuesta. Hasta ...
  #1 (permalink)  
Antiguo 10/02/2008, 08:19
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta a HTTP POST via cURL

Hola,
Soy muy nuevo con esto del PHP y cURL. Estoy intentado enviar unas variables a un script PHP remoto y obtener su respuesta. Hasta ahora ha funcionado correctamente, pero se me presenta un pequeño problema: No se como "capturar" las variables que el script remoto me devuelve.

Este es el codigo:


Código PHP:
<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//

$ch curl_init();

curl_setopt($chCURLOPT_URL,"http://www.argim.net/aimproc.php");
curl_setopt($chCURLOPT_POSTTRUE);
curl_setopt($chCURLOPT_POSTFIELDS,
            
"aimaction=login&src=p&version=150&usercell=1130475986&pass=fpetit&aimserver=0&aimserver_port=80&aimserver_host=auto");

curl_exec ($ch);
curl_close ($ch);
?>
Y el servidor me responde:

Código HTML:
<aimaction=login><result=1><userid=86e991a2eb2683144c0d95849d34feed><m_latest_ver=111><p_latest_ver=150>
<username=FPETIT>
<[email protected]><provname=Argentina - Personal>
<contactscount=1>
<usercell(0)=1130475986><username(0)=Federico Petit>
<provname(0)=Argentina - Personal>
<uloc(0)=Buenos Aires, Buenos Aires> 
He notado que la respuesta esta no la veo directamente en el navegador, sino que aparece "oculta". Solo veo esto cuando uso el boton de SOURCE CODE en el navegador. La idea es poder almacenar cada una de estas variables en variables de PHP para seguir procesandolas en un script.

Gracias.
  #2 (permalink)  
Antiguo 11/02/2008, 09:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Respuesta a HTTP POST via cURL

Prueba asi tu script, recuerda que tu puedes poner el parámetro de RETURN_TRANSFER y analizar el contenido:
Código PHP:
$ch curl_init();

curl_setopt($chCURLOPT_URL,"http://www.argim.net/aimproc.php");
curl_setopt($chCURLOPT_POSTTRUE);
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
curl_setopt($chCURLOPT_POSTFIELDS,
            
"aimaction=login&src=p&version=150&usercell=1130475986&pass=fpetit&aimserver=0&aimserver_port=80&aimserver_host=auto");

$content curl_exec ($ch);
curl_close ($ch); 
Ahora en $content tienes la respuesta del script PHP remoto.

Saludos.
  #3 (permalink)  
Antiguo 11/02/2008, 19:49
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Respuesta a HTTP POST via cURL

Efectivamente....ahora quedo almacenado en esa variable...pero sigue siendo "invisible" al navegador. Por que?. Igualmente el contenido parece que es almacenado como si fuera un string alfanumerico en lugar de variables individuales. Esto es siempre asi en cURL o en HTTP?

Última edición por fpetit; 11/02/2008 a las 20:02
  #4 (permalink)  
Antiguo 11/02/2008, 21:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Respuesta a HTTP POST via cURL

Aparece "oculta" porque el navegador interpreta el contenido HTML, es decir lo que esta entre < y >, asi que no lo va a mostrar, si tu quieres que lo muestre prueba usar htmlspecialchars sobre la variable para que la puedas ver en tu navegador, o cambia el tipo de contenido a text/plain.

Saludos.
  #5 (permalink)  
Antiguo 11/02/2008, 21:17
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Respuesta a HTTP POST via cURL

Bien. Pero seria mas practico si la respuesta pudiera ser almacenada en variables tipo array y no como un string de texto. Existe una funcion en PHP o en este caso hay que procesar la respuesta del servidor como texto puro?
  #6 (permalink)  
Antiguo 11/02/2008, 22:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Respuesta a HTTP POST via cURL

La respuesta parece ser un tipo de XML aunque bastante mal formado, por lo que probablemente podras usar DOM_XML o SimpleXML.

Si esto no te sirve tendras que parsear el texto usando expresiones regulares para transformar ese codigo en variables que puedas utilizar.

Saludos.
  #7 (permalink)  
Antiguo 17/02/2008, 11:20
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Respuesta a HTTP POST via cURL

Muchas gracias por todo GatorV, puede desarrollar la aplicacion sin problemas. Procese en resultado como texto puro y con las funciones de strings de PHP lo fue asignando a variables. Funciona todo OK.

El codigo se ejecuta sin errores, pero cuando hago "piping a un e-mail", el script se ejecuta tambien correctamente, pero el e-mail "rebota" con el siguiente mensaje de error, aunque decir "rebota" no es del todo correcto porque el mensaje llega a destino.:

Código:
This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

 pipe to |/home/a6502507/email.php
   generated by [email protected]

The following text was generated during the delivery attempt:

------ pipe to |/home/a6502507/email.php
      generated by [email protected] ------

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so' - /usr/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0

------ This is a copy of the message, including all the headers. ------
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 07:23.