我是 Symfony 开发的新手,如果这是一个愚蠢的问题,请原谅。我正在尝试从外部 API 获取 JSON 数据。我尝试通过 Postman 运行 GET 请求并返回 JSON 格式的正确数据,因此我知道我的 URL 是正确的。
我编写了以下代码以使用 Guzzle 从我的外部 API HTTP 获取一组 JSON 数据:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Psr\Http\Message\ResponseInterface;
use GuzzleHttp\Client;
class ScheduleController {
/**
* @Route("/schedule")
*/
public function getJobs() {
// Create a client with a base URI
$client = new GuzzleHttp\Client(['base_uri' => 'http://my.api.url/']);
// Send a request to http://my.api.url/site/67/module/1449/item
$response = $client->request('GET', 'site/67/module/1449/item');
dump($response);
}
}
我正在尝试尽可能密切地关注 the Guzzle quick start guide.我从这段代码中收到 500 错误:
尝试从命名空间“AppBundle\Controller\GuzzleHttp”加载类“Client”。
您是否忘记了例如“使用”声明“Symfony\Component\BrowserKit\Client”、“Symfony\Component\HttpKernel\Client”还是“Symfony\Bundle\FrameworkBundle\Client”?
我有一个 use 声明 use GuzzleHttp\Client;
我做错了什么?有更简单的方法吗?
最佳答案
这一行:
$client = new GuzzleHttp\Client(['base_uri' => 'http://my.api.url/']);
应该是:
$client = new Client(['base_uri' => 'http://my.api.url/']);
或:
$client = new\GuzzleHttp\Client(['base_uri' => 'http://my.api.url/']);
自从您导入命名空间后,任何一个都可以工作。您可能想要第一个选项。当您放置 GuzzleHttp\Client 时,PHP 认为它是一个相对命名空间,这就是它说“找不到 AppBundle\Controller\GuzzleHttp\Client”的原因。
关于php - 使用 Guzzle 通过 Symfony 将 HTTP GET 发送到外部 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817525/