【发布时间】:2018-08-07 01:04:01
【问题描述】:
我尝试为Swoole 实现一个Guzzle HandlerStack HttpClientAdapter 并通过以下方式使用它:
$handler = new \App\Swoole\HttpClientAdapter();
$client = new \GuzzleHttp\Client([
'handler' => \GuzzleHttp\HandlerStack::create($handler),
]);
$res = $client->request('POST', 'http://localhost/foo');
处理程序类如下所示:
namespace App\Swoole;
class HttpClientAdapter
{
public function __invoke(RequestInterface $request, array $options)
{
// [..] init and request modification, path/port extraction removed
$cli = new \Swoole\Coroutine\Http\Client($ip, $port, $ssl);
$cli->execute($path);
$cli->close();
return new Promise\FulfilledPromise(
new Psr7\Response($cli->statusCode, $cli->headers, $cli->body)
);
}
}
这确实有效 - 但前提是我在两者之间添加了 MockServer Proxy。 没有,我只是没有得到任何数据......我尝试使用不同的端点,但无济于事。有人知道如何解决/调试问题和/或在野外有 Swoole Guzzle 适配器吗?
【问题讨论】: