CURL Request s POST – POST data se neposílají
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- iwory
- Člen | 147
Zdravím, vyzkoušel jsem už x různých příkladů jak přes curl poslat
POST data ale za boha se je nedaří odeslat. Url se zavolá a data se vrátí
v pořádku, ale to je vše.
Napadá mne snad jen otázka zda není něco potřeba povolit přímo
v aplikaci. Jesti Nette (2.3) samo o sobě neblokuje požadavky nebo cokoliv
podobného.
Poslední z testovaných pokusů:
$data = array("name" => "Tomas", "age" => "45");
$data_string = json_encode($data, JSON_UNESCAPED_UNICODE);
$curl = curl_init('http://api.web.cz/curl');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$response = curl_exec($curl);
Nette:
$this->payload->default_post = $_POST; //empty
$this->payload->post = $this->getHttpRequest()->getPost(); //empty
$this->payload->data = array('me' => 'test');
$this->sendPayload();
Díky moc za případné nakopnutí.
- iwory
- Člen | 147
Vyřešeno:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiHost);
curl_setopt($ch, CURLOPT_POST, count($apiData));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($apiData));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- Pavel Kravčík
- Člen | 1195
Neskutečná chujovina… :/ Díky za navedení, místo počítání lenght jsem počítal počet a funguje to. Mám hroznýho nerva teď.