Yii2 HttpClient:来自响应实例的访问请求实例

时间:2018-09-04 06:41:16

标签: yii2

使用yii2-httpclient,从所得的yii\httpclient\Request对象访问相应yii\httpclient\Response实例的正确方法是什么?

我正在尝试编写一个自定义XML parser,它需要知道它正在解析哪个URL。 似乎无法从解析器实例(仅Request)访问原始Response(可以通过get the URL访问)。

我已经考虑过利用yii\httpclient\Client::EVENT_AFTER_SEND将请求复制到一个变量中,但这不是线程安全的,因此我需要一个更好的解决方案。

1 个答案:

答案 0 :(得分:0)

如果您的解析器需要知道请求的URL来解析响应,则它可能不是解析器,并且您正在过度使用解析器API和ParserInterface。我建议创建一些组件,该组件将包装并隐藏所有请求-响应-解析器逻辑。然后,您将能够实现自定义解析器并手动调用它:

public function get($url) {
    $client = new Client();
    $response = $client->createRequest()
        ->setUrl($url)
        ->send();
    return (new MyParser($url, $response))->getContent();
}