我是Symfony开发的新手,请原谅我这是一个愚蠢的问题。我试图从外部API获取JSON数据。我试图通过Postman运行GET请求并以JSON格式获取正确的数据,所以我知道我的URL是正确的。
我编写了以下代码以使用Guzzle来HTTP GET从我的外部API获取一组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错误:
Attempted to load class "Client" from namespace "AppBundle\Controller\GuzzleHttp".
Did you forget a "use" statement for e.g. "Symfony\Component\BrowserKit\Client", "Symfony\Component\HttpKernel\Client" or "Symfony\Bundle\FrameworkBundle\Client"?
我有use GuzzleHttp\Client;
的使用声明我做错了什么?有更简单的方法吗?
答案 0 :(得分:2)
这一行:
$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”的原因。
答案 1 :(得分:1)
我将IP地址从localhost:8087
设置为我的Windows IP地址192.168.x.x:8087
。
它起作用了,所以不需要对linux端口/ docker端口等做任何事情。