Я не очень хорошо использую PHP и cURL, обычно я просто звоню с помощью javascript или C #, но я работаю с WordPress, поэтому C # не возможно, и у меня есть apikey с в URL-адресе вызова, поэтому мне было интересно, если я мог бы помочь с этим. В javascript вызов будет.
var forecastOptions = {
"cache": false,
"dataType": "jsonp",
"url": callSite
};
var forecastRequest = $.ajax(forecastOptions);
Я делаю это так для моей читабельности. Я также не хочу включать «allow_url_fopen»
РЕДАКТИРОВАТЬ
Так что это то, что у меня сейчас.
<?php
$api_key = 'xxxxxxxxxx';
$latitude = "40.5122";
$longitude = "-88.9886";
$API_ENDPOINT = 'https://api.forecast.io/forecast/';
$request_url = $API_ENDPOINT .
$api_key . '/' .
$latitude . ',' . $longitude;
$ch = curl_init();
$headers = array(
'Content-Type: application/json',
'Accept: application/json'
);
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_HEADER, $headers);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);$content = json_decode($result, true);
if(empty($content)){
print_r("Empty");
}
?>
Это говорит мне, что $ content пуст. Что я пропускаю, если что-нибудь.
Мистер Додд прав, но использование JSONP предполагает, что вы выполняли межсайтовый запрос. Поскольку PHP обычно работает на стороне сервера, вам не нужно об этом беспокоиться. Вам просто нужно убедиться, что используемый вами URL возвращает JSON. Вы можете добавить заголовки к вашему запросу следующим образом:
$headers = array(
'Content-Type: application/json',
'Accept: application/json'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
Когда вы выполняете запрос, вы можете получить ответ и статус HTTP следующим образом:
// Get the result
$result = curl_exec($ch);
// Get the status
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close the session
curl_close($ch);
//Parse the JSON
$result_arr = json_decode($result, true);
Вы можете обратиться к эта страница для документации по всем функциям PHP cURL. Кроме того, я не знаком с cURL в JS, поэтому я не уверен, как соответствовать вашим параметрам, но все параметры cURL для PHP можно найти Вот.
Как пример, это должно выглядеть примерно так:
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);