【问题标题】:Use Guzzle to HTTP GET to external API with Symfony使用 Guzzle 通过 Symfony 向外部 API 发送 HTTP GET
【发布时间】:2017-06-08 14:56:25
【问题描述】:

我是 Symfony 开发的新手,如果这是一个愚蠢的问题,请原谅。我正在尝试从外部 API 获取 JSON 数据。我尝试通过 Postman 运行 GET 请求并以 JSON 格式获取正确的数据,因此我知道我的 URL 是正确的。

我编写了以下代码以使用 Guzzle 从我的外部 API 中 HTTP GET 一组 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; 的使用声明我做错了什么?有没有更简单的方法来做到这一点?

【问题讨论】:

    标签: php http symfony guzzle


    【解决方案1】:

    我将 IP 地址从 localhost:8087 设置为我的 Windows IP 地址192.168.x.x:8087

    它有效,因此无需对 linux 端口/docker 端口等做任何事情。

    【讨论】:

      【解决方案2】:

      这一行: $client = new GuzzleHttp\Client(['base_uri' =&gt; 'http://my.api.url/']);

      应该是:

      $client = new Client(['base_uri' =&gt; 'http://my.api.url/']);

      或:

      $client = new \GuzzleHttp\Client(['base_uri' =&gt; 'http://my.api.url/']);

      自从您导入了命名空间后,任何一个都可以工作。您可能想要第一个选项。当你把 GuzzleHttp\Client PHP 认为它是一个相对的命名空间,这就是为什么它说“AppBundle\Controller\GuzzleHttp\Client”找不到。

      【讨论】:

      • 我从那个更改中得到了这个错误(我正在使用你建议的第一行代码):Attempted to load class "Client" from namespace "GuzzleHttp". Did you forget a "use" statement for e.g. "Symfony\Component\BrowserKit\Client", "Symfony\Component\HttpKernel\Client" or "Symfony\Bundle\FrameworkBundle\Client"?
      • 你真的通过composer安装了guzzle吗?基于该错误,似乎未安装 guzzle。
      • 我确实安装了它。有没有办法解决安装问题?
      • 您可以从项目的命令行根目录运行“composer require guzzlehttp/guzzle”。
      • 您可以随时查看供应商,但根据错误消息,我怀疑您有另一个文件,其中包含新的 Guzzle\Client。或者可能是使用相同文件的另一种方法。也许您正在编辑错误的文件。进行全局搜索。
      猜你喜欢
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      相关资源
      最近更新 更多