Saya mendapatkan kesalahan 403 dari permintaan yang saya buat (yang baik-baik saja bukan itu masalahnya). Namun, sepertinya saya tidak dapat menangkap pengecualian dan menangani kesalahan dengan benar. Kode saya terus berjalan seolah tidak ada yang salah dan menyebabkan masalah lain. Kode

    try:
        verify = True if os.environ.get('environment', 'dev') != 'dev' else False
        response = requests.post(url, headers=headers, data=payload, verify=verify)
        return response.content
    except requests.HTTPError as e:
        print('Error', e)
        return None
    except requests.exceptions.RequestException as e:
        print("Connection refused", e)
        return None
    except Exception as e:
        print("Internal error", e)
        return None

Apakah ada hal lain yang bisa saya coba?

2
Michael Hallabrin 18 Juni 2020, 00:22

1 menjawab

Jawaban Terbaik

Untuk menangkap 403 Anda perlu menaikkan pengecualian. Ini dapat dilakukan dengan memanggil response.raise_for_status() setelah posting. lihat dokumentasi.

try:
    verify = True if os.environ.get('environment', 'dev') != 'dev' else False
    response = requests.post(url, headers=headers, data=payload, verify=verify)
    response.raise_for_status() # This will throw an exception if status is 4xx or 5xx
    return response.content
except requests.HTTPError as e:
    print('Error', e)
    return None
except requests.exceptions.RequestException as e:
    print("Connection refused", e)
    return None
except Exception as e:
    print("Internal error", e)
    return None
1
Greg 17 Juni 2020, 21:27