Zadejte hledaný výraz...

JSON GET požadavek v PHP pomocí curl_

David Musil
verified
rating uzivatele
(69 hodnocení)
5. 5. 2016 08:53:44
Ahoj,
obracím se na Vás s prosbou o radu ohledně API.
Zajímá mě, jak je možné získat data, a to například platebních metod, viz.: https://client.api.dropshipping.cz/
Zkoušel jsem to dát dohromady na základě ukázek ze Stackoverflow, ale pořád mi to neběží a dostávám výpis $statusCode = 0, v té error části vyhodnocení skriptu.
Tohle je můj kód, ale zřejmě tam mám špatně postavený GET dotaz a data nejsou vrácena, nevím.
Dokáže mi někdo poradit?
$token = 'zde_je_token';
$header = array('Accept: application/json', 'Authorization: ' . $token);
$url = "https://client.api.dropshipping.cz/v1/payments?eshop_id=1027";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_USERPWD, $json);
$response = curl_exec($ch);
if ($response === false) {
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//throw new RuntimeException("Request failed.", $statusCode);
echo $statusCode;
echo 'error';
} else {
$response = json_decode($response);
// work with $response
echo 'yes';
print_r($response);
}
5. 5. 2016 08:53:44
https://webtrh.cz/diskuse/json-get-pozadavek-v-php-pomoci-curl_/#reply1193956
Zrejme neposilas dostatek potrebnych headeru, vycti si to z dokumentace, ktere vyzaduji ... mozna to bude User-Agent, Accept-Encoding, Content-Type. Nekde to tam budou mit napsane, kazdopadne dle me ten pozadavek je o ty headery ochuzen :)
5. 5. 2016 08:59:52
https://webtrh.cz/diskuse/json-get-pozadavek-v-php-pomoci-curl_/#reply1193955
Petr Daněk
verified
rating uzivatele
(33 hodnocení)
5. 5. 2016 09:02:02
A co ti vrati curl_error($ch); ?
Pripojujes se na HTTPS, takze bys tam mel mit neco takoveho:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSLVERSION, 4);
Zde cely kod, ktery pouzivam u IPN PayPal:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSLVERSION, 4);
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . "/cacert.pem");
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded_data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $this->follow_location);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
if ($this->force_ssl_v3) {
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
}
$this->response = curl_exec($ch);
$this->response_status = strval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
if ($this->response === false || $this->response_status == '0') {
$errno = curl_errno($ch);
$errstr = curl_error($ch);
throw new Exception("cURL error: $errstr");
}
5. 5. 2016 09:02:02
https://webtrh.cz/diskuse/json-get-pozadavek-v-php-pomoci-curl_/#reply1193954
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
5. 5. 2016 09:06:35
Návod například zde: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
5. 5. 2016 09:06:35
https://webtrh.cz/diskuse/json-get-pozadavek-v-php-pomoci-curl_/#reply1193953
David Musil
verified
rating uzivatele
(69 hodnocení)
5. 5. 2016 10:20:49
Díky, zkusím si s tím ještě pohrát.
5. 5. 2016 10:20:49
https://webtrh.cz/diskuse/json-get-pozadavek-v-php-pomoci-curl_/#reply1193952
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
5. 5. 2016 15:46:14
doplnil bych tam na vhodné místo
Pokud nejsou na serveru aktualizované certifikáty, tak je praktické použít https://github.com/Kdyby/CurlCaBundle
... a nebo bych se na to úplně vykašlal, udělal to přes https://guzzle.readthedocs.io/en/latest/ a ušetřil si spoustu práce :)
5. 5. 2016 15:46:14
https://webtrh.cz/diskuse/json-get-pozadavek-v-php-pomoci-curl_/#reply1193951
Pro odpověď se přihlašte.
Přihlásit