2013-12-18 4 views
0

Я пытаюсь подключиться к API Yelp, в настоящее время использую ZF2 и ZendOAuth. Я не знаю, почему я получаю 404. Вот исходные заголовки запросов и ответов.Как использовать API Yelp в ZF2?

POST /v2/search?term=tacos&location=sf HTTP/1.1 
Host: api.yelp.com 
Connection: close 
Accept-Encoding: gzip, deflate 
User-Agent: Zend\Http\Client 
Content-Type: application/x-www-form-urlencoded 
Authorization: OAuth realm="",oauth_consumer_key="<key>",oauth_nonce="<nonce>",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1387401249",oauth_version="1.0",oauth_token="<token>",oauth_signature="<signature>" 

HTTP/1.1 404 Not Found 
Date: Wed, 18 Dec 2013 21:14:09 GMT 
Server: Apache 
X-Node: web41, api_com 
Content-Length: 8308 
Vary: User-Agent 
Connection: close 
Content-Type: text/html; charset=UTF-8 
X-Mode: rw 
X-Proxied: lb1 

Этот запрос выглядит так, как будто он должен где-то подключиться?

Вот код.

$accessToken = new \ZendOAuth\Token\Access(); 
    $accessToken->setToken('<token>'); 
    $accessToken->setTokenSecret('<secret>'); 
    $host = 'http://' . $_SERVER['HTTP_HOST']; 
    $config = array(
     'consumerKey'=>'<key>', 
     'consumerSecret'=>'<secret>', 
    ); 
    $client = $accessToken->getHttpClient($config); 
    $client->setUri('http://api.yelp.com/v2/search?term=tacos&location=sf'); 
    $client->setMethod('POST'); 
    $adapter = new \Zend\Http\Client\Adapter\Socket(); 
    $client->setAdapter($adapter); 
    $response = $client->send(); 
    $result = $response->getBody(); 

Все примеры OAuth я видел получить маркер доступа с маркером запроса, но Yelp уже дал мне маркер и секрет, так что я пытаюсь построить его вручную.


Обновление: Изменение

$client->setMethod('POST'); 

к

$client->setMethod('GET'); 

является первым шагом, но параметры не могут быть добавлены вручную к URL, они должны быть добавлено с setParameterGet();. Итак, вот мой обновленный рабочий код.

$accessToken = new \ZendOAuth\Token\Access(); 
$accessToken->setToken('<token>'); 
$accessToken->setTokenSecret('<secret>'); 
$host = 'http://' . $_SERVER['HTTP_HOST']; 
$config = array(
    'consumerKey'=>'<key>', 
    'consumerSecret'=>'<secret>', 
); 
$client = $accessToken->getHttpClient($config); 
$client->setUri('http://api.yelp.com/v2/search'); 
$client->setMethod('GET'); 
$params = array('term'=>'tacos', 'location'=>'sf');                             
$client->setParameterGet($params); 
$adapter = new \Zend\Http\Client\Adapter\Socket(); 
$client->setAdapter($adapter); 
$response = $client->send(); 
$result = $response->getBody(); 

ответ

0

Это api требует метода GET. Меняем:

$client->setMethod('POST'); 

To:

$client->setMethod('GET'); 

И попробуйте еще раз)

+0

Хм, я бы ожидал 405 для этого. Теперь, чтобы выяснить часть OAuth ... – rwilson04

 Смежные вопросы

  • Нет связанных вопросов^_^