使用yii2-httpclient
,从所得的yii\httpclient\Request
对象访问相应yii\httpclient\Response
实例的正确方法是什么?
我正在尝试编写一个自定义XML parser,它需要知道它正在解析哪个URL。 似乎无法从解析器实例(仅Request
)访问原始Response
(可以通过get the URL访问)。
我已经考虑过利用yii\httpclient\Client::EVENT_AFTER_SEND
将请求复制到一个变量中,但这不是线程安全的,因此我需要一个更好的解决方案。
答案 0 :(得分:0)
如果您的解析器需要知道请求的URL来解析响应,则它可能不是解析器,并且您正在过度使用解析器API和ParserInterface
。我建议创建一些组件,该组件将包装并隐藏所有请求-响应-解析器逻辑。然后,您将能够实现自定义解析器并手动调用它:
public function get($url) {
$client = new Client();
$response = $client->createRequest()
->setUrl($url)
->send();
return (new MyParser($url, $response))->getContent();
}