Я использую попытку использовать API из yelp в php, используя пример кода, но я даже не могу заставить его работать. Мне просто нужен какой-то способ просмотра json или отображения того, что отображают примеры входных данных, чтобы я мог оттуда работать. Вот пример кода, я просто получаю ошибку сервера 500 или, когда пытаюсь просмотреть исходный код, пустую страницу.
#!/usr/bin/php
<?php
/**
* Yelp API v2.0 code sample.
*
* This program demonstrates the capability of the Yelp API version 2.0
* by using the Search API to query for businesses by a search term and location,
* and the Business API to query additional information about the top result
* from the search query.
*
* Please refer to http://www.yelp.com/developers/documentation for the API documentation.
\* * This program requires a PHP OAuth2 library, which is included in this branch and can be
* found here:
* http://oauth.googlecode.com/svn/code/php/
*
* Sample usage of the program:
* `php sample.php --term="bars" --location="San Francisco, CA"`
*/
// Enter the path that the oauth library is in relation to the php file
require_once('auth.php');
// Set your OAuth credentials here
// These credentials can be obtained from the 'Manage API Access' page in the
// developers documentation (http://www.yelp.com/developers)
$CONSUMER_KEY = "GOTIT";
$CONSUMER_SECRET = "GOTIT";
$TOKEN = "GOTIT";
$TOKEN_SECRET = "GOTIT";$API_HOST = 'api.yelp.com';
$DEFAULT_TERM = 'dinner';
$DEFAULT_LOCATION = 'San Francisco, CA';
$SEARCH_LIMIT = 3;
$SEARCH_PATH = '/v2/search/';
$BUSINESS_PATH = '/v2/business/';/**
* Makes a request to the Yelp API and returns the response
*
* @param $host The domain host of the API
* @param $path The path of the APi after the domain
* @return The JSON response from the request
*/
function request($host, $path) {
$unsigned_url = "https://" . $host . $path;
// Token object built using the OAuth library
$token = new OAuthToken($GLOBALS['TOKEN'], $GLOBALS['TOKEN_SECRET']);
// Consumer object built using the OAuth library
$consumer = new OAuthConsumer($GLOBALS['CONSUMER_KEY'], $GLOBALS['CONSUMER_SECRET']);
// Yelp uses HMAC SHA1 encoding
$signature_method = new OAuthSignatureMethod_HMAC_SHA1();
$oauthrequest = OAuthRequest::from_consumer_and_token(
$consumer,
$token,
'GET',
$unsigned_url
);
// Sign the request
$oauthrequest->sign_request($signature_method, $consumer, $token);
// Get the signed URL
$signed_url = $oauthrequest->to_url();
// Send Yelp API Call
try {
$ch = curl_init($signed_url);
if (FALSE === $ch)
throw new Exception('Failed to initialize');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
if (FALSE === $data)
throw new Exception(curl_error($ch), curl_errno($ch));
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (200 != $http_status)
throw new Exception($data, $http_status);
curl_close($ch);
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
return $data;
}
/**
* Query the Search API by a search term and location
*
* @param $term The search term passed to the API
* @param $location The search location passed to the API
* @return The JSON response from the request
*/
function search($term, $location) {
$url_params = array();
$url_params['term'] = $term ?: $GLOBALS['DEFAULT_TERM'];
$url_params['location'] = $location?: $GLOBALS['DEFAULT_LOCATION'];
$url_params['limit'] = $GLOBALS['SEARCH_LIMIT'];
$search_path = $GLOBALS['SEARCH_PATH'] . "?" . http_build_query($url_params);
return request($GLOBALS['API_HOST'], $search_path);
}
/**
* Query the Business API by business_id
*
* @param $business_id The ID of the business to query
* @return The JSON response from the request
*/
function get_business($business_id) {
$business_path = $GLOBALS['BUSINESS_PATH'] . $business_id;
return request($GLOBALS['API_HOST'], $business_path);
}
/**
* Queries the API by the input values from the user
*
* @param $term The search term to query
* @param $location The location of the business to query
*/
function query_api($term, $location) {
$response = json_decode(search($term, $location));
$business_id = $response->businesses[0]->id;
print sprintf(
"%d businesses found, querying business info for the top result \"%s\"\n\n",
count($response->businesses),
$business_id
);
$response = get_business($business_id);
print sprintf("Result for business \"%s\" found:\n", $business_id);
print "$response\n";
}
/**
* User input is handled here
*/
$longopts = array(
"term::",
"location::",
);
$options = getopt("", $longopts);
$term = $options['term'] ?: '';
$location = $options['location'] ?: '';
query_api($term, $location);
?>
Error 500
это внутренняя ошибка сервера Попробуйте с более простым файлом, чтобы убедиться, что конфигурация сервера не виновата.
Комментарии в образце говорят, чтобы назвать это так:
Пример использования программы:
php sample.php --term="bars" --location="San Francisco, CA"
Это должно работать.
Если вы тестируете его локально, и он работает, а затем пытается переместить его на удаленный сервер, было бы полезно попробовать это из командной строки удаленного сервера (например, через SSH), используя предложенное использование для исключения проблем. с интерпретатором PHP.
Если вы пытаетесь использовать его по-другому, вам, вероятно, придется изменить скрипт. Например, простой доступ к нему на веб-сервере через браузер, скорее всего, не будет работать, потому что terms
а также location
не будет установлен. Точно так же первая строка (#!/usr/bin/php
) не требуется при запуске в качестве веб-страницы.
Других решений пока нет …