2017-11-17 3 views
1

Die Guzzle Website ist sehr schwach Dokumentation. Ich erkannte, dass ich den Quellcode betrachten musste, um alle Funktionen der Bibliothek zu verwenden, aber ich kann den Quellcode immer noch nicht vollständig verstehen.Wie bekomme ich Kekse mit Fruchtsaft?

Wie bekomme ich Cookies mit Guzzle von jeder Website? Welche Klasse zu betrachten?

Antwort

1

Die Cookies Darstellung in guzzle ist Teil des PSR-7 ‚s ServerRequestInterfaceimplementation, beispiels der ServerRequest Klasse. In der Klasse ist eine Array-Eigenschaft $cookieParams definiert. Zu dieser Variable können Sie entweder die $_COOKIE Variable (durch den Aufruf der statischen Methode fromGlobals()) oder ein Array Ihrer Wahl (einschließlich $_COOKIE) durch den Aufruf withCookieParams() zuweisen. Um den Inhalt des Arrays $cookieParams zu lesen, müssen Sie nur getCookieParams() aufrufen.

Beispiel fromGlobals() Verwendung - unter die Rolle eines ServerRequest Fabrik:

<?php 

use GuzzleHttp\Psr7\ServerRequest; 

/** 
* Create a ServerRequest instance, populated with superglobals: 
* $_GET 
* $_POST 
* $_COOKIE 
* $_FILES 
* $_SERVER 
*/ 
$serverRequest = ServerRequest::fromGlobals(); 

// Display the content of $_COOKIE. 
var_dump($serverRequest->getCookieParams()); 

Beispiel direkt eine ServerRequest Instanz und Zuweisen eines Cookies Array an eine Kopie davon zu schaffen - um die Unveränderlichkeit der Anforderung zu erhalten Objekt:

<?php 

use GuzzleHttp\Psr7\ServerRequest; 

// Directly create a ServerRequest instance. 
$serverRequest = new ServerRequest('GET', 'http://localhost/mypath?var=somevar#myfragment', [], NULL, '1.1', $_SERVER); 

// Create a clone instance with the specified cookies array. 
$serverRequest = $serverRequest->withCookieParams($_COOKIE); 

// Display the content of the cookies list. 
var_dump($serverRequest->getCookieParams()); 

Es gibt auch eine andere Implementierung, die eine von GuzzleHttp\Cookie\CookieJarInterface, zB die Klasse GuzzleHttp\Cookie\CookieJar (siehe here) Diese i s auf http://docs.guzzlephp.org dokumentiert unter:

In CookieJar Klasse können Sie einen $cookieArray in Konstruktor zuweisen und einige Methoden, um seine Werte zu behandeln (getCookieValue(), getCookieByName() , setCookie() usw.).

+0

danke, ich habe den Code für den ersten Link "Quickstart Cookies" herausgefunden. Es stellt sich heraus, dass ich Anfragen für Domains gestellt habe, die keine Cookies geben. –

+0

Gern geschehen. Großartig dann. In der Tat ist die CookieJar-Funktionalität einfach zu folgen. Viel Glück. –