file_get_contents() vs curl pour appeler l'Api PHP
En fonction de la description de la Recherche Personnalisée Google API, vous pouvez les appeler en utilisant le verbe GET du RESTE de l'interface, comme avec l'exemple:
GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures
- Je configurer ma clé API et moteur de recherche personnalisé, et lorsqu'il est collé à ma requête de test directement sur mon navigateur, il a bien fonctionné, et j'ai obtenu le fichier JSON affiché à moi.
Puis j'ai essayé d'appeler l'API de mon code PHP en utilisant:
$json = file_get_contents("$url") or die("failed");
Où $url est la même que celle qui a travaillé sur le navigateur, mais mon code PHP était en train de mourir en essayant de l'ouvrir.
Après que j'ai essayé avec curl, et cela a fonctionné. Le code était:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$body = curl_exec($ch);
Questions:
- Comment se file_get_contents() ne fonctionne pas et curl n'a?
- Pourrais-je l'utiliser fsocket pour cela ainsi?
Sans doute parce que vos paramètres de PHP a été configuré pour ne pas autoriser les connexions à distance avec fopen wrappers: uk3.php.net/manual/en/...
Je peux ouvrir d'autres pages avec file_get_contents bien que, comme celui-ci travaille $test = file_get_contents("google.com");
Avez-vous RTM? nz.php.net/manual/en/function.file-get-contents.php
Je peux ouvrir d'autres pages avec file_get_contents bien que, comme celui-ci travaille $test = file_get_contents("google.com");
Avez-vous RTM? nz.php.net/manual/en/function.file-get-contents.php
OriginalL'auteur Daniel Scocco | 2012-03-11
Vous devez vous connecter pour publier un commentaire.
Question 1:
Au premier abord, vous devriez vérifier le paramètre ini
allow_url_fopen
, autant que je sache, c'est la seule raison pourquoifile_get_contents()
ne devrait pas fonctionner. Aussi obsolètesafe_mode
peut en être la cause.Oh, basé sur votre commentaire, vous devez ajouter
http://
à l'URL lors de l'utilisation avec système de fichiers fonctions, c'est un wrapper qui dit à php que vous devez utiliser la requête http, sans fonction pense que vous en avez besoin pour ouvrir./google.com
(le même quegoogle.txt
).Question 2:
Oui, vous pouvez créer presque n'importe quelle demande cURL avec des sockets.
Mon opinion personnelle est que vous devriez coller avec cURL parce que:
OriginalL'auteur Vyktor
file_get_contents
sera probablement réécrire votre demande après l'obtention de l'adresse IP, l'obtention de la même chose que:De nombreux serveurs vous refuser l'accès si vous allez par le biais de l'adressage IP dans la demande.
Avec cURL ce problème n'existe pas. Elle permet de résoudre le nom d'hôte en laissant de la demande que celui-ci, de sorte que le serveur n'est pas impoli de réponse.
Ce pourrait être la "cause", trop..
OriginalL'auteur Filkor
1) Pourquoi êtes-vous en utilisant les guillemets lors de l'appel de
file_get_contents
?2) Comme il a été mentionné dans le commentaire,
file_get_contents
nécessiteallow_url_fopen
être activé sur votre php.ini.3) Vous pouvez utiliser
fsockopen
, mais vous aurez à gérer des requêtes/réponses HTTP manuellement, ce qui serait à réinventer la roue lorsque vous avez cURL. Il en va de même poursocket_create
.4) Concernant le titre de cette question: le roulage peut être plus personnalisable et utile pour travailler avec des complexes HTTP transactions que
file_get_contents
. Cependant, il convient de mentionner, que le travail avec des contextes de flux vous permet de faire beaucoup de paramètres pour votrefile_get_contents
appels. Cependant, je pense que cURL est encore plus complet puisqu'il vous donne, par exemple, la possibilité de travailler avec en parallèle de multiples gestionnaires.OriginalL'auteur El Barto