我正在尝试从Fortnite跟踪器api获取用户统计信息。
我有一个api密钥,并且正在使用正确的网址为indicated in the documentation
模板网址:
https://api.fortnitetracker.com/v1/profile/{platform}/{epic-nickname}
所需的网址:
https://api.fortnitetracker.com/v1/profile/pc/xantium0
如果我在浏览器中使用此链接,则会得到{"message":"No API key found in request"}
(因为我尚未传递API密钥),因此该链接应该正确。另外,如果我没有通过urllib传递api密钥,那么我仍然会收到403错误。
我已经检查了如何在请求中传递标头:How do I set headers using python's urllib?
到目前为止,该代码是:
import urllib.request as ur
request = ur.Request('https://api.fortnitetracker.com/v1/profile/pc/xantium0', headers={'TRN-Api-Key' : 'xxx'})
response = ur.urlopen(request)
print(response.read())
运行时出现此错误:
urllib.error.HTTPError: HTTP Error 403: Forbidden
403签出为:
HTTP 403是HTTP服务器传达给客户端的标准HTTP状态代码,以指示服务器理解了请求,但无法满足请求。有许多子状态错误代码提供了更具体的原因以403状态代码进行响应。
https://en.wikipedia.org/wiki/HTTP_403
如果我没有在标头中传递api密钥,则响应是相同的。
我只能想到此代码无法正常工作的三个原因:
TRN-Api-Key
)我的问题是我认为我的代码是正确的:
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
我通过了url
,我也通过了headers
(这与data
的论点相混淆)。 api文档还提到应在标头中传递它。
我也很确定我需要使用api文档中显示的TRN-Api-Key
:
TRN-Api-Key: xxx
也在this question中(使用Ruby):
header = {
key: "TRN-Api-Key: Somelong-api-key-here"
}
或者我被禁止了(尽管我在15分钟前就拿到了钥匙,这是可能的),有没有办法检查?是否会返回此错误?
是什么使我无法获取用户统计信息?
答案 0 :(得分:0)
尝试使用requests,这是一个Python语言,快速且广泛使用的模块。
import requests
url = 'https://api.fortnitetracker.com/v1/profile/pc/xantium0'
headers = {
'TRN-Api-Key' : 'xxx'
}
response = requests(url, headers=headers)
print('Requests was successful:', response.ok)
print(response.text)
如果它不起作用,则可以使用浏览器访问该URL,然后检查请求: 在Firefox中,按Cntrl + Shift + E,在Chrome Cntrl + E中(或使用Cntrl + Shift + I检查,然后转到“网络”)。按“ https://api.fortnitetracker.com/v1/profile/pc/xantium0”并更改标题。在Firefox上,有“修改并重新发送”按钮。检查响应,并最终尝试更改标头api密钥名称。
希望这会有所帮助,让我知道。