URI из ответа на GuzzleHttp - PullRequest
       219

URI из ответа на GuzzleHttp

0 голосов
/ 07 августа 2020

Мне нужно получить URI из Response из GuzzleHTTP, в настоящее время использую getAsync и обрабатывая не менее 50 элементов одновременно, и мне нужен способ получить URI, который Я использую от жрать Client.

$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

1 Ответ

1 голос
/ 07 августа 2020

Это для жрать 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.com

https://docs.guzzlephp.org/en/5.3/http-messages.html#effective -url

Guzzle 6

Решение Guzzle 6.1 прямо из документов .

use 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

Кредиты на

{ ссылка }

...