2017-11-17 17 views
1

Guzzle 사이트는 매우 약한 문서입니다. 라이브러리의 모든 기능을 사용하려면 소스 코드를 살펴야하지만, 여전히 소스 코드를 완전히 이해할 수는 없다는 것을 깨달았습니다.구근으로 쿠키를 얻는 방법?

어떤 웹 사이트에서 Guzzle로 쿠키를 얻는 방법? 어떤 수업을보아야합니까?

답변

1

guzzle의 쿠키 표현은 PSR-7ServerRequestInterfaceimplementation의 일부입니다 (예 : ServerRequest 클래스). 클래스에는 배열 속성 $cookieParams이 정의됩니다. 이 변수에 $_COOKIE 변수 (정적 메서드 fromGlobals() 호출) 또는 선택한 배열 ($_COOKIE 포함)을 withCookieParams()으로 호출하여 할당 할 수 있습니다. $cookieParams 어레이의 내용을 읽으려면 getCookieParams()으로 전화하면됩니다.

fromGlobals()을 사용하여 실시 예 - ServerRequest 공장의 역할을 갖는 - 요청의 불변성을 유지하기 위해 직접 ServerRequest 인스턴스를 생성하고 그것의 복사본에 쿠키 배열을 할당

<?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()); 

예 객체 :

<?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()); 

또한 예를 들어, 클래스 GuzzleHttp\Cookie\CookieJar (here 참조)이 내가 다른 구현, GuzzleHttp\Cookie\CookieJarInterface의 하나가

CookieJar 클래스에서는이 생성자에 $cookieArray을 할당하고, getCookieByName()의 값 (getCookieValue()을 처리하기 위해 몇 가지 방법이있을 수 있습니다에서 http://docs.guzzlephp.org에 문서화 s의 , setCookie() 등).

+0

감사합니다. 첫 번째 링크 인 "Quickstart Cookies"에 대한 코드를 알아 냈습니다. 쿠키를 제공하지 않는 도메인을 요청했습니다. –

+0

당신은 오신 것을 환영합니다. 그 때 중대한. 실제로,'CookieJar' 기능은 따라하기 쉽습니다. 행운을 빕니다. –