J'ai un programme qui utilise le module des requêtes pour envoyer une requête get qui répond (correctement) avec un 304 "Non modifié". Après avoir fait la demande, je vérifie que response.status_code == requests.codes.ok
, mais cette vérification échoue. Les demandes ne considèrent-elles pas un 304 comme "ok"?
Vous pouvez vérifier les codes réels dans la source . ok
signifie 200 seulement.
Il existe une propriété appelée ok
dans l'objet Response
qui renvoie True
si le code d'état n'est pas un 4xx
ou un 5xx
.
Vous pouvez donc faire ce qui suit:
if response.ok:
# 304 is included
Le code de cette propriété est assez simple:
@property
def ok(self):
try:
self.raise_for_status()
except HTTPError:
return False
return True
Vous pouvez vérifier l'implémentation du code requests.status ici code source .
L'implémentation vous permet d'accéder à tous/tout type de status_codes comme suit:
import requests
import traceback
url = "https://google.com"
req = requests.get(url)
try:
if req.status_code == requests.codes['ok']: # Check the source code for all the codes
print('200')
Elif req.status_code == requests.codes['not_modified']: # 304
print("304")
elifreq.status_code == requests.codes['not_found']: # 404
print("404")
else:
print("None of the codes")
except:
traceback.print_exc(file=sys.stdout)
En conclusion, vous pouvez accéder à n'importe quelle demande-réponse comme illustré. Je suis sûr qu'il existe de meilleures façons, mais cela a fonctionné pour moi.