(Python) Как проверить http ответ на статус - PullRequest
0 голосов
/ 15 мая 2019

Может кто-нибудь сказать мне, как проверить код состояния HTTP-ответа с http.client? Я не нашел ничего конкретного в документальном фильме http.client. Код будет выглядеть так:

  if conn.getresponse():
    return True #Statuscode = 200
  else:
    return False #Statuscode != 200

Мой код выглядит так:

from urllib.parse import urlparse
import http.client, sys

def check_url(url):
  url = urlparse(url)
  conn = http.client.HTTPConnection(url.netloc)
  conn.request("HEAD", url.path)
  r = conn.getresponse()
  if r.status == 200:
    return True
  else:
    return False

if __name__ == "__main__":
  input_url=input("Enter the website to be checked (beginning with www):")
  url = "http://"+input_url
  url_https = "https://"+input_url
  if check_url(url_https):
    print("The entered Website supports HTTPS.")
  else:
    if check_url(url):
      print("The entered Website doesn't support HTTPS, but supports HTTP.")
  if check_url(url):
    print("The entered Website supports HTTP too.")

1 Ответ

0 голосов
/ 15 мая 2019

Взгляните на документацию здесь , вам просто нужно сделать:

r = conn.getresponse()
print(r.status, r.reason)

Обновление : Если вы хотите (как сказано в комментариях) проверить соединение http, вы можете в конечном итоге использовать HTTPConnection и прочитать статус:

import http.client

conn = http.client.HTTPConnection("docs.python.org")
conn.request("GET", "/")
r1 = conn.getresponse()
print(r1.status, r1.reason)

Если веб-сайт правильно настроен для реализации HTTPS, у вас не должно быть кода состояния 200; В этом примере вы получите ответ 301 Moved Permanently, что означает, что запрос был перенаправлен, в этом случае переписан на HTTPS.

...