如何在Laravel中伪造guzzele发布请求以获取响应数据

时间:2018-06-22 06:31:42

标签: php laravel guzzle guzzlehttp

在laravel中,我需要伪造guzzlehttp发布请求。

        try {
            return $client->request('POST', $url);
        } catch (GuzzleException $e) {
            return $e->getCode();
        }

此请求返回401或包含一些数据的成功消息。

此刻,我需要伪造此函数以调用其他方法。我怎样才能做到这一点?

这是我的作曲家文件的一部分

"laravel/framework": "5.1.*",
"guzzlehttp/guzzle": "~6.0.0",

1 个答案:

答案 0 :(得分:3)

引用Guzzle docs

  

Guzzle提供了一个模拟处理程序,该处理程序可用于通过将返回值移出队列来满足带有响应或异常的HTTP请求。

// Create a mock and queue two responses.
$mock = new MockHandler([
    new Response(200, ['X-Foo' => 'Bar']),
    new Response(202, ['Content-Length' => 0]),
    new RequestException("Error Communicating with Server", new Request('GET', 'test'))
]);

$handler = HandlerStack::create($mock);
$client = new Client(['handler' => $handler]);

// The first request is intercepted with the first response.
echo $client->request('GET', '/')->getStatusCode();
//> 200
// The second request is intercepted with the second response.
echo $client->request('GET', '/')->getStatusCode();
//> 202

也:

  

Guzzle附带有一个node.js测试服务器,该服务器接收请求并从队列返回响应。测试服务器公开了一个简单的API,用于使响应入队并检查已收到的请求。

如果MockHandler和测试Web服务器不够用,请考虑编写自己的Handler。有关详细信息,请参见http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html#handlers