2017-07-31 6 views
5

मैं अपनी एपीआई साइट लॉगिन करने के लिए गुज़ल का उपयोग कर रहा हूं, और फिलहाल मैं सही क्रेडेंशियल्स के साथ लॉगिन करता हूं, मैं इसे अगली कॉल में भेजने के लिए रीफ्रेश टोकन के साथ एक कुकी वापस लेता हूं, यहां मेरा सरल (और काम कर रहा है) कोड है : अबGuzzleHttp: मैं POST प्रतिक्रिया से कुकीज़ कैसे सहेज सकता हूं और इसे अगले पोस्ट में उपयोग कर सकता हूं?

$newCookies = $response->getHeader('set-cookie'); 

, मैं अगले कॉल में इस कुकी का उपयोग करने की जरूरत है, और मुझे पता:

$client = new Client(array(
      'cookies' => true 
     )); 


     $response = $client->request('POST', 'http://myapi.com/login', [ 
      'timeout' => 30, 
      'form_params' => [ 
       'email' => $request->get('email'), 
       'password' => $request->get('password'), 
      ] 
     ]); 

और मैं एक कुकी के साथ सही प्रतिक्रिया वापस पाने, मैं कुकी का उपयोग करके देख सकते हैं Guzzle मेरे लिए कुकी को बचा सकता है और "कुकीज" या "सत्रकुकीज" का उपयोग करके अगली कॉल में इसे स्वचालित रूप से (या नहीं) भेज सकता है, मैंने इसका उपयोग करने की कोशिश की है लेकिन मैं नहीं ई 'जार' में कुकी, यहाँ मैं क्या किया है:

$cookieJar = new SessionCookieJar('SESSION_STORAGE', true); 

     $client = new Client([ 
      'cookies' => $cookieJar 
     ]); 

     $response = $client->request .... 

लेकिन, जब मैं कुकी पद से वापस पाने के, मैं इसे देख सकते हैं केवल का उपयोग करके:

$newCookies = $response->getHeader('set-cookie'); 

और यह कुकी जार में नहीं है, इसलिए यह इसे अगले कॉल में नहीं भेजेगा .. मुझे यहां क्या याद आ रही है?

धन्यवाद!

+0

http://docs.guzzlephp.org/en/stable/quickstart.html#cookies। आपको कुकी – Phil

+0

को अपने उत्तर के लिए धन्यवाद देने के लिए लॉगिन अनुरोध के लिए जार सेट करने की आवश्यकता है, मैंने इसे अनुरोध में सेट करने का प्रयास किया है और नए क्लाइंट इनिट में कुछ भी काम नहीं करता है (मैंने मैन्युअल कई बार पढ़ा है), क्या आप कुछ कोड जोड़ सकते हैं? –

उत्तर

1

प्रति प्रलेखन here के रूप में, ['cookies' => true], सभी अनुरोधों के लिए एक साझा कुकी जार के उपयोग को इंगित करता है, जबकि ['cookies' => $jar] ग्राहक के अनुरोध/प्रतिक्रियाओं के साथ प्रयोग के लिए एक विशिष्ट कुकी जार ($jar) के उपयोग का संकेत मिला। तो अगर आप भी उपयोग करने की आवश्यकता होगी:

$client = new Client(array(
    'cookies' => true 
)); 


$response = $client->request('POST', 'http://myapi.com/login', [ 
    'timeout' => 30, 
    'form_params' => [ 
     'email' => $request->get('email'), 
     'password' => $request->get('password'), 
    ] 
]); 

// and using the same client 

$response = $client->request('GET', 'http://myapi.com/next-url'); 

// or elsewhere ... 

$client = new Client(array(
    'cookies' => true 
)); 

$response = $client->request('GET', 'http://myapi.com/next-url'); 

या

$jar = new CookieJar; 

$client = new Client(array(
    'cookies' => $jar 
)); 


$response = $client->request('POST', 'http://myapi.com/login', [ 
    'timeout' => 30, 
    'form_params' => [ 
     'email' => $request->get('email'), 
     'password' => $request->get('password'), 
    ] 
]); 

// and using the same client 

$response = $client->request('GET', 'http://myapi.com/next-url'); 

// or elsewhere ... 

$client = new Client(array(
    'cookies' => $jar // the same $jar as above 
)); 

$response = $client->request('GET', 'http://myapi.com/another-url'); 
+0

धन्यवाद, ठीक है, मैंने बस इसे समझ लिया :) – EranLevi

संबंधित मुद्दे

 संबंधित मुद्दे