Je me tourne vers vous car j’ai régulièrement une erreur lorsque j’envoi un requète à l’API REST. J’utilise HTTPFUL et j’avoue que c’est la première fois que je développe un script utilisant l’api rest.
Je lance une première fois la synchronisation, et je me retrouve avec cette erreur:
[13-Dec-2017 15:40:57 UTC] error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
[13-Dec-2017 15:40:57 UTC] PHP Fatal error: Uncaught Httpful\Exception\ConnectionErrorException: Unable to connect to "https://XXXX.com/api/index.php/dictionarycountries?sortfield=code&sortorder=ASC&limit=100&sqlfilters=(t.code%3Alike%3A%27FR%27)&DOLAPIKEY=xxxxxxxxxxxxxxxxxxxf": 35 error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol in phar: httpful.phar/Httpful/Request.php:208
Stack trace:
#0 Httpful\Request->send()
#1 dolibarr->country_id_from_name('FR')
#2 customers_synchonisation() in phar: httpful.phar/Httpful/Request.php on line 208
Je relance une seconde fois sans rien changer, et là miracle ça fonctionne parfaitement.
Toujours à la recherche d’une solution concernant ce problème. Je remarque que c’est essentiellement sur les requêtes de type GET.
Pour être sûr que cela ne vient pas de HTTPFUL, j’ai testé avec la fonction du wiki.
Et j’ai testé avec une autre requête, à savoir:
Et là, même problème. Sans changer le code, une fois ça fonctionne, l’autre d’après je n’ai pas de réponse.
Le seul remède que j’ai trouvé pour le moment et de faire
$success = 0;
while($success == 0){
$reponse = // faire la requête
if(!empty($reponse)) $success=1;
}
C’est du bricolage et ça ne me plait pas trop…
J’ai un VPS info-géré et je suis sous apache et PHP7.1. aucune amélioration sous PHP5.6 ou 7.0.
Quelqu’un aurait-il une autre solution?
Si aucune solution, je pense que je vais finir par me connecter directement à la base de données dolibarr depuis mon module woocommerce et utiliser du bon vieux sql.
Dans l’explorer j’arrive juste à afficher les méthodes avec la clé api. Les méthodes ne fonctionnent pas directement. J’ai fait pas mal de recherche, je n’ai jamais trouvé pourquoi. Et vu que ça semblait fonctionner en passant par un script, ça ne me dérangeait pas plus que ça.
Je ne sais pas ce que tu entends par réponse du header, mais je suppose que c’est ça:
Je précise que j’accède à la page avec une adresse en https.
Je ne sais pas si ça a un intérêt mais sur la page /api/index.php/explorer, j’ai ceci:
[ base url: https://monsite.com/api/index.php/explorer/resources.json , api version: 1 ]
Et sans indiquer la clé, je clique sur « raw » et je vois ceci:
Je suis un peu septique dans le sens où ça fonctionne, puis ne fonctionne plus, SANS changer le code. Que ce soit par httpful ou l’exemple du wiki. Mais, je vais quand même tenter de régler ce problème pour être sûr.
Saurais tu, d’ailleurs, comment régler l’API afin qu’il soit paramétré en https ?
Je me réponds à moi même. Ça se passe dans le fichier de configuration conf.php. La variable $dolibarr_main_url_root était renseigné en http au lieu de https, et la variable $dolibarr_main_force_https à 1 que j’ai laissé tel quel.
Grâce à cette petite correction, l’api explorer fonctionne! Je vais maintenant voir ce que cela donne à distance depuis mon module woocommerce…
C’était bien ça le problème. Si $dolibarr_main_url_root n’est pas en https, ça provoque une confusion dans l’API REST même si on force le HTTPS avec la variable $dolibarr_main_force_https à 1, et qu’on envoi les requêtes en https.
Ne me demandez pas pourquoi j’avais mis $dolibarr_main_url_root en http au lieu de https …