PHP cURL-запрос к API zomato, работающему на локальном хосте, но возвращающему только пустой массив на работающем сервере

Я создал сайт, который подключается к API Zomato https://developers.zomato.com/api через PHP cURL и получает массив информации в формате JSON.

Я сократил код, который я использую здесь:

<?php

// Errors on
error_reporting(E_ALL);

// Get cURL resource
$curl = curl_init();

// Curl options
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Accept: application/json', 'user-key: XXXXXXXXXX'],
CURLOPT_URL => 'https://developers.zomato.com/api/v2.1/search?q=jazushi',
));

// Send the request & save response to $resp
$resp = curl_exec($curl);

// Check for errors if curl_exec fails
if(!curl_exec($curl)){
die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
}

// Close request to clear up some resources
curl_close($curl);

// dumping $resp
echo 'var_dump: <br>';
var_dump($resp);
echo '<br><br>';

// Decode json
$jsonZomato = json_decode($resp, true);

// print readable results
print "<pre>";
print_r($jsonZomato);
print "</pre>";

?>

Это прекрасно работает на моем локальном хосте и возвращает полный массив информации. Когда я размещаю тот же код на моем сервере, кажется, что он подключается к API нормально, но возвращает пустой массив http://i.imgur.com/ai7eJ0W.png

Я проверил, включен ли cURL на моем сервере, и версия PHP почти такая же. Я не вижу сообщений об ошибках. И если я добавлю в запрос фиктивный ключ API, Zomato отправит мне сообщение об ошибке. Так что, похоже, определенно подключается нормально. Просто не получаю никакой дополнительной информации.

Я определенно над головой с этим. Любая помощь приветствуется. Ура!

Между прочим, если это не будет решено, и кто-то еще борется с этим, я включил очень элементарный скребок, который вы можете использовать, который в основном делает то же самое, что и API.

<?php
// scrape setup
$rurl = 'https://www.zomato.com/sydney/jazushi-surry-hills';
$contents = file_get_contents($rurl);

// scrape the name
preg_match('/h1 class="grey-text">(.*?)</s', $contents, $matches);
$rname = $matches[1];

// scrape the 'description'
preg_match('/itemprop="priceRange" >(.*?)</s', $contents, $matches);
$rcost = $matches[1];

// scrape the phone number
preg_match('/class="tel" itemprop="telephone">(.*?)</s', $contents, $matches);
$rphone = $matches[1];

// scrape the featured thumb
preg_match('/meta property="og:image" content="(.*?)"/s', $contents, $matches);
$rfeature = $matches[1];

// converting to thumbnail
$rthumb = substr($rfeature, 0, -6) . 'thumb' . substr($rfeature, -4);

// scrape the address
preg_match('/div class="resinfo-icon">(.*?)<\/div/s', $contents, $matches);
$raddress = strip_tags(trim($matches[1]));

// scrape the location
preg_match('/" class="left grey-text fontsize3">(.*?)</s', $contents, $matches);
$rlocation = trim($matches[1]);

// scrape the cuisines
preg_match('/a class="grey-text fontsize3" title="View all (.*?) in/s', $contents, $matches);
$rcuisines = $matches[1];

// scrape the rating
preg_match('/property="zomatocom:average_rating" content="Rating: (.*?)"/s', $contents, $matches);
$rrating = $matches[1];

// scrape the lat
preg_match('/itemprop="latitude" content="(.*?)" /s', $contents, $matches);
$rlat = $matches[1];

// scrape the lon
preg_match('/itemprop="longitude" content="(.*?)" /s', $contents, $matches);
$rlon = $matches[1];

// scrape the opening hours
$today = date('w');
$days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

for ($i=0; $i < count($days); $i++){
// todays hours have a bold style
if ($today === strval($i)) {
preg_match('/>' . $days[$i]. '<\/div><div class="col-l-13 bold">(.*)<\/div>/iU', $contents, $    matches);
// every other da    y
} else {
preg    _match('/>' . $days[$i]. '<\/div><div class="col-l-13 ">(.*)<\/div>/iU', $contents, $    matches);
}
/    / make $hoursDay variables from $matches
$    {hours.$days[$i]} = $matches[1];
}

echo $rname . '<br>';
echo $rphone . '<br>';
echo $rfeature . '<br>';
echo $rthumb . '<br>';
echo $raddress . '<br>';
echo $rlocation . '<br>';
echo $rcuisines . '<br>';
echo $rrating . '<br>';
echo $rlat . '<br>';
echo $rlon . '<br>';
echo $rcost . '<br>';

?>

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]