J'ai débogué pendant des heures pour savoir pourquoi mon code s'interrompt aléatoirement avec cette erreur : JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Voici le code que j'ai :
while True:
try:
submissions = requests.get('http://reymisterio.net/data-dump/api.php/submission?filter[]=form,cs,'+client+'&filter[]=date,cs,'+since).json()['submission']['records']
break
except requests.exceptions.ConnectionError:
time.sleep(100)
Et j'ai débogué en imprimant requests.get(url)
y requests.get(url).text
et j'ai rencontré les cas "particuliers" suivants :
-
requests.get(url)
renvoie une réponse 200 réussie etrequests.get(url).text
renvoie du html. J'ai lu en ligne que cela devrait échouer lorsque l'on utiliserequests.get(url).json()
Il n'y a pas de problème, car il ne pourra pas lire le code html, mais il n'y a pas de problème. Comment cela se fait-il ? -
requests.get(url)
renvoie une réponse 200 réussie etrequests.get(url).text
est au format json. Je ne comprends pas pourquoi, lorsqu'il passe à l'adresserequests.get(url).json()
la ligne est interrompue par l'erreur JSONDecodeError ?
La valeur exacte de requests.get(url).text
pour le cas 2 est :
{
"submission": {
"columns": [
"pk",
"form",
"date",
"ip"
],
"records": [
[
"21197",
"mistico-form-contacto-form",
"2018-09-21 09:04:41",
"186.179.71.106"
]
]
}
}