Ho cercato tutto lo stackoverflow e Google per una soluzione al mio problema.Zend_HTTP_Client non mi consente di postare alcun dato
Ho creato due progetti con Zend Framework - Project1
e Project2
- e voglio implementare servizi Web su uno di essi. L'idea è di inviare una stringa JSON a Project1
e ricevere un JSON con tutti i dettagli associati a tale variabile usando il POST. Ora ho creato un TestController su 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();
}
Il codice precedente funziona. Legge il dataAction
dal controller Project1
e mi dà un risultato di ciò che viene echeggiato. Ma quando provo questo:
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();
}
E sul lato server quando provo la visualizzazione all'interno dataAction
:
public function dataAction(){
var_dump($this->getRequest()->getParam('var-name'));
var_dump($_POST);
die();
}
ottengo un output di questo: array NULL (0) {} .... Ottengo lo stesso risultato quando lo provo sul lato client. Anche per citare .. Ho anche provato ad aprire il file di input php: // ma ho ottenuto una stringa vuota ...
Cosa mi manca ??? Mi sono frustrato a cercare su di esso sin dal mattino, ma non ho trovato soluzione.
Grazie in anticipo per la risposta.
Felice di avere una risposta rapida. Come hai detto, ho provato a usare quel codice, ma ho ottenuto un NULL con var_dump ($ json) e bool (false) con var_dump ($ post); e sono d'accordo che il tuo post non venga analizzato. Ma quando provo questo: $ client-> setRawData ($ test, 'String') -> request ('POST'); dove test è una stringa non mi dà altro che NULL? – 1291
Non sei sicuro del motivo per cui non ha funzionato per te. Ho aggiunto il codice completo per entrambe le azioni del controller nel codice. È principalmente una copia/incolla di ciò che hai avuto per la richiesta. Spero che tu possa farlo funzionare. Assicurati di utilizzare l'ultima versione ZF 1.12.0. Ho provato con 1.11.13 e ha funzionato anche con quella versione. – drew010
Apparentemente non stavo inviando i dati correttamente ... questo è quello che ho cambiato: $ data = array ('num' => '1234'); $ dataString = ""; ... Mentre sul lato server ho fatto questo: $ this-> request-> getParam ('num') $ this-> json-> sendData ($ data); .. e ora funziona :)! Grazie per tutto l'aiuto! Apprezzalo! – 1291