猿问

来自 GuzzleHttp 响应的 URI

URI我需要从当前使用的Response中获取,并同时处理至少 50 个项目,并且需要一种方法来从 guzzle 中获取我使用的。GuzzleHTTPgetAsyncURIClient


$groups->each(function($group) {

    $promises = $group->map( function($lead, $index) {

        $client = new Client(['http_errors' => false]);

        return $client->getAsync($lead->website, [

            'timeout' => 5, // Response timeout

            'connect_timeout' => 5, // Connection timeout

        ]); 

    })->toArray();

    settle($promises)->then( function($results) {

        $collections = collect($results);

        $fulfilled = $collections->where('state', 'fulfilled')->all();

    })->wait();

});

似乎Request有这个getUri方法,但Response在接口或类和文档中没有也找不到。希望有人可以提供帮助


编辑:尝试过getEffectiveUrl,但这仅适用于 Guzzle 5,目前使用 6


陪伴而非守候
浏览 128回答 1
1回答

慕盖茨4494581

这是给guzzle 5用的在响应中,您没有 getUri 方法,因为只有请求有此方法。如果发生重定向或发生某些情况,您可以使用以下方法获取响应 url$response = GuzzleHttp\get('http://httpbin.org/get');echo $response->getEffectiveUrl();// http://httpbin.org/get$response = GuzzleHttp\get('http://httpbin.org/redirect-to?url=http://www.google.com');echo $response->getEffectiveUrl();// http://www.google.comuse GuzzleHttp\Client;use GuzzleHttp\TransferStats;$client = new Client;$client->get('http://some.site.com', [    'query'   => ['get' => 'params'],    'on_stats' => function (TransferStats $stats) use (&$url) {        $url = $stats->getEffectiveUri();    }])->getBody()->getContents();echo $url; // http://some.site.com?get=params
随时随地看视频慕课网APP
我要回答