web-dev-qa-db-fra.com

Comment obtenir une réponse en utilisant cURL dans PHP

Je veux avoir une classe autonome PHP) dans laquelle je veux avoir une fonction qui appelle une API via cURL et obtient la réponse. Quelqu'un peut-il m'aider à cet égard?

Merci.

53

il suffit d’utiliser le morceau de code ci-dessous pour obtenir la réponse d’une URL de service Web reposante, j’utilise l’URL de mention sociale,

$response = get_web_page("http://socialmention.com/search?q=iphone+apps&f=json&t=microblogs&lang=fr");
$resArr = array();
$resArr = json_decode($response);
echo "<pre>"; print_r($resArr); echo "</pre>";

function get_web_page($url) {
    $options = array(
        CURLOPT_RETURNTRANSFER => true,   // return web page
        CURLOPT_HEADER         => false,  // don't return headers
        CURLOPT_FOLLOWLOCATION => true,   // follow redirects
        CURLOPT_MAXREDIRS      => 10,     // stop after 10 redirects
        CURLOPT_ENCODING       => "",     // handle compressed
        CURLOPT_USERAGENT      => "test", // name of client
        CURLOPT_AUTOREFERER    => true,   // set referrer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,    // time-out on connect
        CURLOPT_TIMEOUT        => 120,    // time-out on response
    ); 

    $ch = curl_init($url);
    curl_setopt_array($ch, $options);

    $content  = curl_exec($ch);

    curl_close($ch);

    return $content;
}
104
mymotherland

Le noeud de la solution est la mise

CURLOPT_RETURNTRANSFER => true

ensuite

$response = curl_exec($ch);

CURLOPT_RETURNTRANSFER indique à PHP de stocker la réponse dans une variable au lieu de l'imprimer sur la page, de sorte que $ réponse contiendra votre réponse. Voici votre code de travail le plus fondamental (je pense, je ne l'ai pas testé ):

// init curl object        
$ch = curl_init();

// define options
$optArray = array(
    CURLOPT_URL => 'http://www.google.com',
    CURLOPT_RETURNTRANSFER => true
);

// apply those options
curl_setopt_array($ch, $optArray);

// execute request and get response
$result = curl_exec($ch);
67
siliconrockstar

Si quelqu'un d'autre le découvre, j'ajoute une autre réponse pour fournir le code de réponse ou d'autres informations pouvant être nécessaires dans la "réponse".

http://php.net/manual/en/function.curl-getinfo.php

// init curl object        
$ch = curl_init();

// define options
$optArray = array(
    CURLOPT_URL => 'http://www.google.com',
    CURLOPT_RETURNTRANSFER => true
);

// apply those options
curl_setopt_array($ch, $optArray);

// execute request and get response
$result = curl_exec($ch);

// also get the error and response code
$errors = curl_error($ch);
$response = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

var_dump($errors);
var_dump($response);

Sortie:

string(0) ""
int(200)

// change www.google.com to www.googlebofus.co
string(42) "Could not resolve Host: www.googlebofus.co"
int(0)
17
Ligemer