Python-http.client:获取对TMDB API的请求失败错误

Python-http.client:获取对TMDB API的请求失败错误,python,http.client,Python,Http.client,我被这个错误和一份到期的投稿给卡住了 conn = http.client.HTTPSConnection("api.themoviedb.org/3") conn.request('GET', '/person/5064/movie_credits?api_key={api_key}&language=en-US') r1 = conn.

我被这个错误和一份到期的投稿给卡住了

        conn = http.client.HTTPSConnection("api.themoviedb.org/3")
        conn.request('GET', '/person/5064/movie_credits?api_key={api_key}&language=en-US')                                         
        r1 = conn.getresponse()
        print(r1.status, r1.reason)
        data1 = r1.read()
        print(type(data1))
        print(data1)        
我已经尝试过从浏览器中使用api密钥访问api,它可以正常工作。在笔记本电脑上运行代码时,我遇到以下错误:

C:\Users\Dhaval Desai\Desktop\Gatech\DVA\hw1-skeleton>"C:/Users/Dhaval Desai/AppData/Local/Programs/Python/Python37/python.exe" "c:/Users/Dhaval Desai/Desktop/Gatech/DVA/hw1-skeleton/Q1/submission.py"
Traceback (most recent call last):
  File "c:/Users/Dhaval Desai/Desktop/Gatech/DVA/hw1-skeleton/Q1/submission.py", line 311, in <module>
    tmdb_api_utils.get_movie_credits_for_person("5064")
  File "c:/Users/Dhaval Desai/Desktop/Gatech/DVA/hw1-skeleton/Q1/submission.py", line 214, in get_movie_credits_for_person
    conn.request("GET", "/movie/550?api_key=8dcea7325ee7c9571a21d3184cffdf34&language=en-US")
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1252, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1298, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1247, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 966, in send
    self.connect()
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1414, in connect
    super().connect()
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 938, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\socket.py", line 707, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed
C:\Users\Dhaval-Desai\Desktop\Gatech\DVA\hw1-skeleton>“C:/Users/Dhaval-Desai/AppData/Local/Programs/Python/Python37/Python.exe”“C:/Users/Dhaval-Desai/Desktop/Gatech/DVA/hw1-skeleton/Q1/submission.py”
回溯(最近一次呼叫最后一次):
文件“c:/Users/Dhaval-Desai/Desktop/Gatech/DVA/hw1-skeleton/Q1/submission.py”,第311行,在
tmdb_api_utils.为个人获得电影信用(“5064”)
文件“c:/Users/Dhaval-Desai/Desktop/Gatech/DVA/hw1-skeleton/Q1/submission.py”,第214行,为个人获取电影学分
conn.request(“GET”,“/movie/550?api_key=8dcea7325ee7c9571a21d3184cfdf34&language=en-US”)
请求中的第1252行文件“C:\Users\Dhaval Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”
self.\u发送\u请求(方法、url、正文、标题、编码\u分块)
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第1298行,在发送请求中
self.endheaders(body,encode\u chunked=encode\u chunked)
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第1247行,在endheaders中
self.\u发送\u输出(消息体,encode\u chunked=encode\u chunked)
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第1026行,在发送输出中
self.send(msg)
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第966行,在send中
self.connect()
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第1414行,在connect中
super().connect()
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第938行,在connect中
(self.host、self.port)、self.timeout、self.source\u地址)
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\socket.py”,第707行,位于create\u connection中
对于getaddrinfo(主机、端口、0、SOCK_流)中的res:
文件“C:\Users\Dhaval-Desai\AppData\Local\Programs\Python\Python37\lib\socket.py”,第748行,位于getaddrinfo中
对于_socket.getaddrinfo(主机、端口、系列、类型、协议、标志)中的res:
socket.gaierror:[Errno 11001]getaddrinfo失败

您试图访问的主机名是
“api.themoviedb.org/3”
,呃,它不是主机名

正如错误回溯所示,这是发生错误的第二行-可能
http.client.HTTPSConnection()
在此之前不会实际查找您提供的主机名

例如,尝试解析主机名时会出现完全相同的错误(尽管行号不同,但我在Windows x64上使用的是Python 3.8.3):

导入套接字 >>>socket.getaddrinfo(“api.themoviedb.org/3”,443) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“C:\Python38\lib\socket.py”,第918行,在getaddrinfo中 对于_socket.getaddrinfo(主机、端口、系列、类型、协议、标志)中的res: socket.gaierror:[Errno 11001]getaddrinfo失败 只需删除
/3

>>> import socket
>>> socket.getaddrinfo("api.themoviedb.org/3",443)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python38\lib\socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed