Php curl

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

Php curl

par Rockleader » 04 Juil 2016, 20:31

Salut,

Ce truc commence à me rendre dingue, donc je viens voir si vous n'avez pas une idée.


Je précise que la fichier php.ini est bien configuré pour utiliser la dll de curl.

Voici le morceau de code en question supposé utiliser l'api de google translate.

EN gros on envoie un lien et on a une traduction (quand je tape l'url ça fonctionne parfaitement, mais quand j'essaie de passer par curl pour avoir le résultat, plus rien !

Code: Tout sélectionner
function translate($text,$origine,$destination){
    $apiKey='macle';
    $url = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source='.$origine.'&target='.$destination."/";
    $fichLog=fopen("log.txt",'a+');
    $handle = curl_init($url);
    fwrite($fichLog,curl_error($handle));
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($handle);
   // Vérification si une erreur est survenue
if(!curl_errno($handle)){
 $info = curl_getinfo($handle);

 fwrite($fichLog,'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url']);
}               
    $responseDecoded = json_decode($response, true);
    curl_close($handle);
    return $responseDecoded['data']['translations'][0]['translatedText'];
  }


J'ai commencé par voir que la fonction ne renvoyait rien, j'ai donc mis des logs pour essayer de voir ce qu'il se passait.

Il se trouve que response est déjà vide et ne contient rien.

Donc je me suis dis qu'il y avait un problème avec curl. Et apparemment c'est ça, sauf que le problème n'est pas réellement détecté.


EN fait, c'est comme si curl init renvoyait directement null, et que par la suite on ne détectait pas le problème.

En gros je vais rentrer dans la condition if(!curl_errno($handle)){

Mais au moment d'afficher $info = curl_getinfo($handle);

fwrite($fichLog,'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url']);

$info sera sans valeur ou peut être chaine vide je ne sais pas, le fait est que ça me fait comme si tout se passait bien, pas d'erreur détecté, mais à coté de ça, c'est aussi comme si la fonction ne renvoyait rien du tout.

Sa me rend vraiment fou, je vois pas comment je peux réagir à une erreur qui n'est pas détecté par le code...


Pour vous donner une idée, voici ce que l'appel de cette fonction avec

Hello
en
fr

en paramètre devrait renvoyer sachant que c'est bien ce que me renvoie l'url

{
"data": {
"translations": [
{
"translatedText": "Salut !"
}
]
}
}


Celui qui me débloque est un dieu =)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Php curl

par fatal_error » 04 Juil 2016, 21:21

keep it simple
Code: Tout sélectionner
//http://php.net/manual/fr/book.curl.php  (qrworld.net)
function getUrlContent($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    $data = curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $data;
}
var_dump(getUrlContent('https://www.googleapis.com/language/translate/v2?key=random&q=' . rawurlencode('arbre rouge') . '&source=fr&target=eng/'));

//
string(176) "{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "keyInvalid",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}
"
(obviously since no valid apikey given)


la fonction ci dessus est ok.
Ensuite, je te suggère de vérifier que tu as bien installé php-curl
et var_dump sur $data evidemment
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

Re: Php curl

par Rockleader » 04 Juil 2016, 21:26

J'ai rien installé du tout je suis sur windows avec easy php et chrome là.


Tout ce dont je me suis assuré, c'est d'avoir la bibliothèque dé-commenté dans le fichier php.ini d'easy php pour pouvoir m'en servir, donc normalement ça devrait être ok je pense.

Maintenant peut-être y a-t-il quelque chose à faire, installer quand même ? var_dump ça me dit rien non plus.

EDIT: Je viens de voir pour var_dump effectivement ça pourrait etre utile pour debug, je vais essayer ça demain en espérant que ça m'aide.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

Re: Php curl

par Rockleader » 05 Juil 2016, 10:49

Pour la petite histoire j'ai fini par trouvé, ça venait d'un problème de certificat SSL (l'option vaut true par défaut pour curl).
Je l'ai passé à false et tout se passe bien ;)

Mais du coup j'imagine que la connexion n'est pas sécurisé.

Enfin c'est pas bien grave de mon point de vue l'essentiel c'est que ça marche.

Merci pour le var_dump je connaissais pas et ça m'a bien aidé mine de rien !
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite