【问题标题】:Symfony 2 - Guzzle 6.X HTTP | get the body responseSymfony 2 - Guzzle 6.X HTTP |得到身体反应
【发布时间】:2015-11-25 11:39:59
【问题描述】:

我在 Symfony 2.7.3 中使用Guzzle,但我不知道为什么我有响应的标题而不是正文。 (我在本地主机上使用 WAMP)

$donnees = array(// Base URI is used with relative requests
            'base_uri' => $urlAuth,
            // You can set any number of default request options.
            'timeout'  => 2.0,
            'headers' => [
                'User-Agent' => 'testing/1.0',
                'Accept'     => 'application/json'
            ],
            'verify' => false,
            'json'      => ["Id" => $Id, 
                                                "Username" => $username,
                                                "Password" => $password,
                                                "SecretId" => $secretId]
            );

        $client = new Client($donnees);

        $response = $client->post( '/auth/', $donnees );
dump($response);

所以我得到了:

但是流是空的,而我应该得到一个令牌(你可以看到 content-length : 69)

你能帮帮我吗,我不知道我错过了......

(服务器只接受POST获取token)

【问题讨论】:

  • $body = $response->getBody();
  • 我知道,但它只是给对象Stream并且它是空的(与屏幕相同)
  • 你确定吗?我现在测试了,当我转储 $response 时,我得到的正是你得到的,但是如果我转储 ..->getBody(),那么我就有了正文。
  • 是的,你可以检查vgy.me/wyqBMI.png它和我的屏幕一样:/这很奇怪!
  • 没什么奇怪的,试试json_decode($response->getBody(), true)

标签: php symfony http guzzle6


【解决方案1】:

因为它是 json 响应,你应该对其进行解码,添加:

$response_body = json_decode($response->getBody(), true);

true 表示返回的对象将转换为关联数组。

【讨论】:

  • 我不明白为什么流看起来是空的,但通过解码我有内容。非常感谢!
  • 因为guzzle响应体是一个PHP流,所以你必须对其进行操作才能得到你想要的(我不是PHP高手所以可能我错了)。
【解决方案2】:

通过调用$response->getBody(),您可以获得一个GuzzleHttp\Psr7\Stream 对象。 这个类有一个有用的 __toString() 方法,所以下面的行将按预期工作:

$response_body = (string)$response->getBody();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2017-10-24
    相关资源
    最近更新 更多