我曾尝试为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?
发布于 2018-08-07 01:04:02
嗯,这工作太棒了。但是我推荐了另一个基于swoole协程的httpclient:https://github.com/swlib/saber/blob/master/README-EN.md。
它是由swoole developer开发的,你会发现它看起来很像Guzzle。
https://stackoverflow.com/questions/49114979
复制相似问题