2015-07-31 17 views
5

Sto provando ad usare Guzzle invece di usare direttamente cURL per raggiungere e richiesta HTTP. Come faccio a fare questo stesso tipo di richiesta ma con Guzzle? O dovrei limitarmi a cURL?Traduci richiesta cURL a Guzzle

$ch = curl_init(); 
// Set the URL 
curl_setopt($ch, CURLOPT_URL, $url); 
// don't verify SSL certificate 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
// Return the contents of the response as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
// Follow redirects 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
// Set up authentication 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, "$token:X"); 

Ecco come ho. Continuo a correre in 401 errore non autorizzato. So di avere le credenziali corrette. Ciò che mi fa pensare che non sia sulla strada giusta è la documentazione di Guzzle che afferma: auth è attualmente supportato solo quando si utilizza il gestore cURL, ma è pianificata la creazione di una sostituzione che può essere utilizzata con qualsiasi gestore HTTP. Ma dal mio punto di vista Guzzle è impostato su default con cURL.

$guzzleData = [ 
    'auth' => [$token, 'X'], 
    'allow_redirects' => true, 
    'verify' => false, 
]; 

$client = new \Guzzle\Http\Client(); 
$request = $client->get($url, $guzzleData); 
$response = $request->send(); 
+0

Probabilmente ottieni più risposte alla tua domanda quando pubblichi su Stack Exchange, votato per la migrazione. – carlcs

+0

Come accennato da @carlcs, questa domanda è molto più adatta a Stack Overflow. Sebbene sia utile per alcuni sviluppatori di plugin Craft, non è una domanda artigianale di per sé. –

+0

Bello! Sono stato in grado di votare due volte, una volta su Craft SE e ora qui! :) – carlcs

risposta

9

Ecco la soluzione:

$client = new \Guzzle\Http\Client(); 
$request = $client->get($url); 

$request->getCurlOptions()->set(CURLOPT_SSL_VERIFYHOST, false); 
$request->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false); 
$request->getCurlOptions()->set(CURLOPT_RETURNTRANSFER, true); 
$request->getCurlOptions()->set(CURLOPT_FOLLOWLOCATION, true); 
$request->getCurlOptions()->set(CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
$request->getCurlOptions()->set(CURLOPT_USERPWD, "$token:X"); 

$response = $request->send(); 
0

La soluzione ho potuto ottenere lavorare per Guzzle6 è:

$headers = array(); 
$headers['grant_type'] = 'client_credentials'; 
$headers['client_id'] = $clientid; 
$headers['client_secret'] = $clientSecret; 

$response = $this->client->post($urlAuth, ['form_params' => $headers]); 
$output = $response->getBody()->getContents(); 

cioè la matrice intestazione deve essere avvolto in 'form_params'