这是我第一个使用API/python的项目。基本上,我想从trackhive.com获取信息,看看包在哪里。但首先,为了了解它是如何工作的,我只是想创建一个轨迹
在网站上,他们给了我这个例子:
from urllib2 import Request, urlopen
values = """
{
"tracking_number": "9361289676090919095393",
"slug": "usps"
}
"""
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer Token'
}
request = Request('https://private-anon-6175dd5596-trackhive.apiary-proxy.com/trackings
', data=values, headers=headers)
response_body = urlopen(request).read()
当我使用Python3时,我的代码是
import json
import urllib.request
values = """
{
"tracking_number": "9361289676090919095393",
"slug": "usps"
}
"""
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer mytokenAPI'
}
url = 'https://private-anon-6175dd5596-trackhive.apiary-proxy.com/trackings'
request = urllib.request.Request(url,data=values, headers=headers)
response_body = urllib.request.urlopen(request, data=bytes(json.dumps(headers), encoding="utf-8")).read()
但是当它调用“urllib.request.urlopen”时,它返回“HTTPError:Bad request”。我做错了什么
在网站上,他们说终点位于:https://api.trackinghive.com。在他们的代码中,他们正在访问:'https://private-anon-6175dd5596-trackhive.apiary-proxy.com/trackings'. 如果我没有访问他们的示例,我怎么知道我应该访问这个URL,而不是类似于“https://api.trackinghive.com/trackings"? 它不应该在某个地方使用端点吗
(对于所有这些问题,我感到很抱歉,对于这些带有API和URL的代码是如何工作的,我有点困惑)
谢谢你的帮助^^
编辑:
链接到文档: https://trackhive.docs.apiary.io/#introduction/api-requirements/end-point
如果我在https://my.trackinghive.com/login上注册并生成
API key
,那么代码对我有效我使用
requests
而不是urllib
,因为创建POST
请求更容易。文档显示它必须是POST
,而不是GET
而且更容易发送
JSON
数据。它不需要头Content-Type': 'application/json'
,因为requests
将在使用json=...
时自动添加它。而且它不需要将values
转换为一个字符串,因为requests
将自动执行此操作顺便说一句:我不需要模块
json
来处理数据。我只使用它将其转换为字符串,并使用缩进来显示它结果:
相关问题 更多 >
编程相关推荐