【问题标题】:How do I use Yelp's API in ZF2?如何在 ZF2 中使用 Yelp 的 API?
【发布时间】:2013-12-18 21:40:33
【问题描述】:

我正在尝试连接到 Yelp 的 API,目前使用的是 ZF2 和 ZendOAuth。我不知道为什么会收到 404。这是原始请求和响应标头。

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(); 

【问题讨论】:

    标签: php http rest zend-framework2 yelp


    【解决方案1】:

    该 api 需要 GET 方法。所以改变:

    $client->setMethod('POST');
    

    收件人:

    $client->setMethod('GET');
    

    再试一次)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      相关资源
      最近更新 更多