web-dev-qa-db-fra.com

Guzzle 6, récupère la chaîne de requête

Est-il possible d'imprimer la requête complète sous forme de chaîne avant ou après son envoi? 

$res = (new GuzzleHttp\Client())->request('POST', 'https://endpoint.nz/test', [ 'form_params' => [ 'param1'=>1,'param2'=>2,'param3'=3 ] ] );

comment puis-je voir cette demande comme une chaîne? (pas la réponse)

La raison en est que ma demande échoue et que je retourne une 403 et je veux savoir ce qui est exactement envoyé comme la même demande fonctionne lorsque vous utilisez PostMan. 

15
Nicekiwi

Selon la documentation Guzzle, il existe une option de débogage, voici le lien de la documentation Guzzle http://guzzle.readthedocs.org/en/latest/request-options.html#debug

$client->request('GET', '/get', ['debug' => true]);
15
Mohammed Safeer

J'ai entendu dire que vous pouvez utiliser le middleware d'historique pour stocker/générer les informations de requête/réponse.

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;

$container = [];
$history = Middleware::history($container);

$stack = HandlerStack::create();
// Add the history middleware to the handler stack.
$stack->Push($history);

$client = new Client(['handler' => $stack]);

$client->request('POST', 'http://httpbin.org/post',[
    'body' => 'Hello World'
]);

// Iterate over the requests and responses
foreach ($container as $transaction) {
    echo (string) $transaction['request']->getBody(); // Hello World
}

exemple plus avancé ici: http://docs.guzzlephp.org/fr/stable/testing.html#history-middleware

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;

$container = [];
$history = Middleware::history($container);

$stack = HandlerStack::create();
// Add the history middleware to the handler stack.
$stack->Push($history);

$client = new Client(['handler' => $stack]);

$client->request('GET', 'http://httpbin.org/get');
$client->request('HEAD', 'http://httpbin.org/get');

// Count the number of transactions
echo count($container);
//> 2

// Iterate over the requests and responses
foreach ($container as $transaction) {
    echo $transaction['request']->getMethod();
    //> GET, HEAD
    if ($transaction['response']) {
        echo $transaction['response']->getStatusCode();
        //> 200, 200
    } elseif ($transaction['error']) {
        echo $transaction['error'];
        //> exception
    }
    var_dump($transaction['options']);
    //> dumps the request options of the sent request.
}
2
armyofda12mnkeys