API status_code = 400,如何解决?

时间:2020-07-23 20:48:47

标签: python api ticketmaster

import requests

consumer_key     = 'IAqfvoioh1NRfvjAsCGqGP7W49w5yO5X'

Consumer_secret = 'bF6mdAS7Yj1nNsCi'

consumer_creds = f"{consumer_key}:{Consumer_secret}"

method = "GET"
version = {'version': 'v1'}
package = {'package':['discovery', 'accounts']}
resource = {'resource': "attractions"}
random = '/K8vZ9175BhV'
typee = 'json'

url = "https://app.ticketmaster.com/discovery/v2/attractions/K8vZ9175BhV.json?apikey=vPNhGwstALCFCwpCdzXjKGjGg0bQcEym4"

url_api = "https://app.ticketmaster.com/{package}/{version}/{resource}/{random}.{typee}?apikey=**{consumer_key}"

r = requests.get(url_api, data = version, params = package, headers = resource)
r.json()
valid_request = r.status_code in range(200, 299)



url_params = {'id': 'id'}
query_parama = {'locale':'en'}

我将其用作来源: https://developer.ticketmaster.com/products-and-docs/apis/discovery-api/v2/

我不确定如何解决

1 个答案:

答案 0 :(得分:0)

首先,请接受esqew的建议。这已经足够长了,您可能应该只更改所有API凭据。

尽管如此……但是,除非您更改了资格,否则不要继续阅读:)

我猜您在使用url时有效,而在您使用url_api时无效,对吗? 400的响应表示它是poorly formed request。收到请求的服务器甚至无法弄清楚它的含义。

在这种情况下,您传入的是保存在url_api中的字符串,而不实际替换您想要的值。除非我误读了某些内容,否则我认为paramsheaders不会像您期望的那样工作。至少现在,只需创建所需的URL并发出请求即可。

是这样的:

import requests

consumer_key     = 'super_secret_key'

method = "GET"
version = "v1"
package = "discovery"
resource = "attractions"
random = 'K8vZ9175BhV'
data_type = 'json'


url_api = f"https://app.ticketmaster.com/{package}/{version}/{resource}/{random}.{data_type}"

print(f"Making request with URL: {url_api}")

r = requests.get(url_api, params={'apikey': consumer_key})
...

我首先使字符串成为f字符串,以便填充这些变量,然后使变量成为您要替换的字符串值。最初的目标是让请求填充这些变量吗?我最近从来没有使用过请求,所以也许有一种更优雅的方式来做到这一点。

请注意,打印声明不包含密钥。通过将其传递给参数,它将不会显示在控制台上。这让我想起...您确实更改了API密钥,对吗?!?!

我想再次指出,我有一段时间没有使用请求了。我希望我不要混淆任何语法或误解您在原始代码中的意图。