176 votes

Obtenir un objet JSON à partir d'une URL

J'ai une URL qui renvoie un objet JSON comme ceci :

{
    "expires_in":5180976,
    "access_token":"AQXzQgKTpTSjs-qiBh30aMgm3_Kb53oIf-VA733BpAogVE5jpz3jujU65WJ1XXSvVm1xr2LslGLLCWTNV5Kd_8J1YUx26axkt1E-vsOdvUAgMFH1VJwtclAXdaxRxk5UtmCWeISB6rx6NtvDt7yohnaarpBJjHWMsWYtpNn6nD87n0syud0"
} 

Je veux obtenir l'objet JSON à partir de l'URL et ensuite l'objet access_token valeur.

Alors comment puis-je le récupérer via PHP ?

2voto

Ya-Ze Lin Points 31
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'url_here');
$result = curl_exec($ch);
curl_close($ch);

$obj = json_decode($result);
echo $obj->access_token;

2voto

Firdous bhat Points 85

file_get_contents() ne récupère pas les données de l'url, alors j'ai essayé curl et ça marche bien.

1voto

Raul Sanchez Points 261

Notre solution consiste à ajouter des validations à la réponse afin d'être sûr d'avoir un objet json bien formé dans le dossier. $json variable

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
if (! $result) {
    return false;
}

$json = json_decode(utf8_encode($result));
if (empty($json) || json_last_error() !== JSON_ERROR_NONE) {
    return false;
}

1voto

Ma solution ne fonctionne que pour les cas suivants : Si vous confondez un tableau multidimensionnel avec un tableau unique

$json = file_get_contents('url_json'); //get the json
$objhigher=json_decode($json); //converts to an object
$objlower = $objhigher[0]; // if the json response its multidimensional this lowers it
echo "<pre>"; //box for code
print_r($objlower); //prints the object with all key and values
echo $objlower->access_token; //prints the variable

Je sais que la réponse a déjà été donnée, mais pour ceux qui sont venus ici pour chercher quelque chose, j'espère que cela pourra vous aider.

0voto

jamal arradi Points 8

Lorsque vous utilisez curl vous donnent parfois 403 (accès interdit) Résolu en ajoutant cette ligne pour émuler le navigateur.

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');

J'espère que cela aidera quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X