He estado buscando en todo stackoverflow y en Google para encontrar una solución a mi problema.Zend_HTTP_Client no me dejará PUBLICAR ningún dato
He creado dos proyectos con Zend Framework - Project1
y Project2
- y deseo implementar servicios web en uno de ellos. La idea es enviar una cadena JSON al Project1
y recibir de vuelta un JSON con todos los detalles asociados con esa variable usando POST. Ahora he creado un TestController en Project2
:
public function indexAction(){
$uri = 'http://project1.com/WebService/data';
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
);
$client = new Zend_Http_Client($uri, $config);
$request = $client->request('POST');
print_r($request->getBody());
exit();
}
funciona el código de seguridad. Lee el dataAction
del controlador Project1
y me da una salida de todo lo que se repite. Pero cuando intento esto:
public function indexAction(){
$uri = 'http://project1.com/WebService/data';
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
);
$client = new Zend_Http_Client($uri, $config);
$data = array(
'userID' => 'TEST TEST',
'value' => 1,
'description' => 'ABCDEFG',
);
$request = $client->request('POST');
$json = json_encode($data);
$client->setRawData($json, 'application/json')->request('POST');
exit();
}
Y en el lado del servidor cuando intento mostrar el interior dataAction
:
public function dataAction(){
var_dump($this->getRequest()->getParam('var-name'));
var_dump($_POST);
die();
}
consigo una salida de esta: array NULL (0) {} .... Obtengo el mismo resultado cuando lo intento en el lado del cliente. También mencionar ... También intenté abrir el archivo de entrada php: // pero obtuve una cadena vacía ...
¿Qué me estoy perdiendo? Me he frustrado buscando desde la mañana pero no encontré ninguna solución.
Gracias de antemano por la respuesta.
Me alegra tener una respuesta rápida. Como dijiste, traté de usar ese código, pero obtuve un NULL con var_dump ($ json) y bool (falso) con var_dump ($ post); y estoy de acuerdo con que tu publicación json no se haya analizado. Pero cuando intento esto: $ client-> setRawData ($ test, 'String') -> request ('POST'); donde la prueba es una cadena ¿todavía no me da nada más que NULL? – 1291
No estoy seguro de por qué no funcionó para usted. Agregué el código completo para ambas acciones del controlador en el código. Es principalmente una copia/pega de lo que tenía para la solicitud. Espero que puedas hacer que funcione. Asegúrese de estar utilizando la última versión de ZF 1.12.0. Probé con 1.11.13 y también funcionó con esa versión. – drew010
Aparentemente no estaba enviando los datos correctamente ... esto es lo que cambié: $ data = array ('num' => '1234'); $ dataString = ""; ... Mientras que en el lado del servidor hice esto: $ this-> request-> getParam ('num') $ this-> json-> sendData ($ data); .. y ahora funciona :)! ¡Gracias por toda la ayuda! ¡Lo aprecio! – 1291