错误消息:未定义 Http / API 导入 Python

Posted

技术标签:

【中文标题】错误消息:未定义 Http / API 导入 Python【英文标题】:Error message : Http not defined / API import Python 【发布时间】:2021-04-11 03:27:37 【问题描述】:

我正在尝试导入 Json API 的 URL,但收到错误消息:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-18-5f40dac6d9a4> in <module>
      1 # get data from the API
      2 url = 'https://admin.appnext.com/offerApi.aspx?pimg=1&city=1&ua=1&id=5da11d20-0a32-4852-8233-39b711a360a9'
----> 3 r = http.request('GET', url)
      4 r.status

NameError: name 'http' is not defined

我使用的代码如下:

#  data retrieval
import urllib3
from urllib3 import request
# json data
import json
# pandas dataframes
import pandas as pd

没有问题要导入

# get data from the API
url = 'https://admin.appnext.com/offerApi.aspx?pimg=1&city=1&ua=1&id=5da11d20-0a32-4852-8233-39b711a360a9'
r = http.request('GET', url)
r.status

有人知道可能是什么问题吗?

提前致谢

【问题讨论】:

【参考方案1】:

您没有在显示的代码中的任何地方定义变量 http。您首先需要从连接池管理器中实例化一个新请求,然后您才能执行该请求:

#  data retrieval
import urllib3
from urllib3 import request
# json data
import json
# pandas dataframes
import pandas as pd

# get data from the API
http = urllib3.PoolManager()
url = 'https://admin.appnext.com/offerApi.aspx?pimg=1&city=1&ua=1&id=5da11d20-0a32-4852-8233-39b711a360a9'
r = http.request('GET', url)
r.status

供参考:https://urllib3.readthedocs.io/en/latest/

【讨论】:

【参考方案2】:

HTTP 未在您的代码中定义,因此您不能使用它。我建议您查看 W3Schools 指南中关于 python 中“请求”模块的内容,并查看他们关于如何执行请求的示例:https://www.w3schools.com/python/module_requests.asp。

然后您可以像这样执行请求:

#  data retrieval
import requests
# json data
import json
# pandas dataframes
import pandas as pd

url = 'https://admin.appnext.com/offerApi.aspx?pimg=1&city=1&ua=1&id=5da11d20-0a32-4852-8233-39b711a360a9'
r = requests.get(url)
print(r.status)

【讨论】:

【参考方案3】:

你需要使用urllib.request.urlopen()

代码如下:

import urllib.request

url = 'https://admin.appnext.com/offerApi.aspx?pimg=1&city=1&ua=1&id=5da11d20-0a32-4852-8233-39b711a360a9'
x = urllib.request.urlopen(url)
print(x.read())

【讨论】:

以上是关于错误消息:未定义 Http / API 导入 Python的主要内容,如果未能解决你的问题,请参考以下文章

当 API 中未发送必填字段值时,如何在 swagger 中自定义错误消息?

导入的函数未定义

PyCharm 中未使用的错误导入语句?

angular7 ag-grid this.http 是未定义的错误

Workday Studio - 向供应商 API 发出 HTTP 请求接收错误:未定义名为“http-token-auth”的 bean

NextJS - 未定义窗口