envoi de requête en php sur Home-assistant

envoi de requête en php sur Home-assistant - PHP - Programmation

Marsh Posté le 02-09-2020 à 19:41:22    

bonjour , je coince depuis quelques temps sur un envoi d'une requête en GET (en PHP) vers home-assistant  
mon code dans mon programme PHP executé sur un Host (HOSTPAPA)  :
 

Code :
  1. $url_to_HA = $Box_url."refresh_token=".$refresh_token."&access_token=".$access_token."&usage_point_id=".$usage_point_id."&flow_id=".$Flow_id;
  2.        if ($debug) {echo "<br>url_to_HA: $url_to_HA";}
  3.        $ch = curl_init();
  4. $headers = array();
  5.         curl_setopt($ch, CURLOPT_URL, $url_to_HA);
  6.         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  7.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  8.         curl_setopt($ch, CURLOPT_HEADER, FALSE);
  9.         curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
  10.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  11.         curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1)
  12.   $response = curl_exec($ch);
  13.   $info = curl_getinfo($ch);
  14.   if($debug){
  15.     echo "<pre>";
  16.     print_r($info);
  17.     echo "</pre>";
  18.    }
  19.   curl_close($ch);


 
mon log :

Code :
  1. url_to_HA: http://xxxxxxx:8123/auth/enedis/ca [...] 18084d4367
  2. Array
  3. (
  4.     [url] => http://xxxxxxx:8123/auth/enedis/ca [...] 18084d4367
  5.     [content_type] =>
  6.     [http_code] => 0
  7.     [header_size] => 0
  8.     [request_size] => 0
  9.     [filetime] => -1
  10.     [ssl_verify_result] => 0
  11.     [redirect_count] => 0
  12.     [total_time] => 0.200431
  13.     [namelookup_time] => 3.4E-5
  14.     [connect_time] => 0
  15.     [pretransfer_time] => 0
  16.     [size_upload] => 0
  17.     [size_download] => 0
  18.     [speed_download] => 0
  19.     [speed_upload] => 0
  20.     [download_content_length] => -1
  21.     [upload_content_length] => -1
  22.     [starttransfer_time] => 0
  23.     [redirect_time] => 0
  24.     [redirect_url] =>
  25.     [primary_ip] =>
  26.     [certinfo] => Array
  27.         (
  28.         )
  29.     [primary_port] => 0
  30.     [local_ip] =>
  31.     [local_port] => 0
  32. )


 
donc au vu du log, c'est comme si la requête n'était pas envoyée ou pas reçue et du côté réception (HA) j'ai rien qui se passe  
 
ce qui me perturbe c'est que si je reprend le contenu de url_to_HA (dans le log) et que je colle le contenu dans un navigateur (ou un extension de type RESTClient), je reçois correctement la requête et j'ai un retour code 200
 
 
donc là je coince  

Reply

Marsh Posté le 02-09-2020 à 19:41:22   

Reply

Marsh Posté le 02-09-2020 à 21:54:11    

C'est normal que ça soit pas du https ? T'as vérifié que de là où est ton serveur web, tu pingues bien le HA ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-09-2020 à 23:49:00    

merci de cette suggestion,  
je viens de tester avec du https et c'est pareil, même retour du log que celui que j'ai posté  
 
de plus quand je mets l'url dans RESTClient du browser (en http) c'est OK la requête est bien acheminée

Reply

Marsh Posté le 03-09-2020 à 08:11:32    

PHP affiche bien les mgs d'erreur au niveau du reporting ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-09-2020 à 22:39:47    

merci de la suggestion mais aucuns résultats et y compris le echo curl_error($ch) ne donne rien  
au passage c'est echo 'curl_error($ch)';
sinon error 500


Message édité par jluc2808 le 03-09-2020 à 22:40:05
Reply

Marsh Posté le 03-09-2020 à 23:03:48    

Non, c'est pas echo 'curl_error($ch)'; mais bien echo curl_error($ch);
Le premier va t'écrire la chaîne curl_error($ch) alors que le second va t'afficher l'erreur retournée par la dernière instruction exécutée par curl :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-09-2020 à 11:32:54    

rufo a écrit :

Non, c'est pas echo 'curl_error($ch)'; mais bien echo curl_error($ch);
Le premier va t'écrire la chaîne curl_error($ch) alors que le second va t'afficher l'erreur retournée par la dernière instruction exécutée par curl :o


quand je mets echo curl_error($ch);
je n'ai rien en retour et rien sur le site cible  
 
 

Reply

Marsh Posté le 04-09-2020 à 11:37:36    


 
 
merci de ces suggestion, j'ai bien tenté les timeout et connecttimeout avec plusieurs valeur , j'ai toujours rien  
j'ai regardé le lien, cependant je ne vois pas comment l'utiliser (pas en terme de syntaxe, ça c'est OK) , mais quoi en faire pour ce qui concerne l'envoi de data vers HA

Reply

Marsh Posté le 04-09-2020 à 12:35:23    

jluc2808 a écrit :


quand je mets echo curl_error($ch);
je n'ai rien en retour et rien sur le site cible  
 
 


Au lieu du echo fai un var_dump(curl_error($ch)); même si je toute que ça change qq chose.
T'es bien sûr d'avoir activé le reporting_error à un niveau qui permet de voir toutes les erreurs et warnings ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-09-2020 à 19:47:25    

Et ton header ($headers) est ok ? Tu peux essayer de recopier celui envoyé par ton navigateur puisque la requête fonctionne à ce moment là ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 04-09-2020 à 19:47:25   

Reply

Marsh Posté le 04-09-2020 à 23:43:34    

Je parie que ça vient du fait qu'il a pas déclaré un user-agent dans son header et/ou qu'il ne stocke pas de cookie.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-09-2020 à 00:22:11    

MaybeEijOrNot a écrit :

Et ton header ($headers) est ok ? Tu peux essayer de recopier celui envoyé par ton navigateur puisque la requête fonctionne à ce moment là ?


comme c'est du get rien dans le header, j'ai regardé ce qui est envoyé par RESTClient qui permet de lister simplement les différentes parties et le header est vide

Reply

Marsh Posté le 05-09-2020 à 00:23:14    

rufo a écrit :

Je parie que ça vient du fait qu'il a pas déclaré un user-agent dans son header et/ou qu'il ne stocke pas de cookie.


effectivement je n'ai pas de user-agent spécifié , mais c'est aussi le cas avec RESTClient qui fonctionne

Reply

Marsh Posté le 05-09-2020 à 11:50:59    

Et sinon essaye peut-être de préciser le port avec CURLOPT_PORT. Par contre je ne sais pas s'il faut continuer de préciser le port dans l'url.


Message édité par MaybeEijOrNot le 05-09-2020 à 11:52:04

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed