API status_code = 400, как это исправить?

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 ответ

Во-первых, прислушайтесь к совету esqew. Это длилось достаточно долго, вам, вероятно, следует просто изменить все свои учетные данные API.

Что касается вопроса... но не продолжайте читать, если вы не поменяли свои кредиты:)

Я предполагаю, когда вы используете url это работает, и когда вы используете url_apiэто не так, правильно? Ответ 400 означает, что это плохо сформированный запрос. Сервер, получающий запрос, даже не может понять, что это означает.

В этом случае вы передаете строку, сохраненную в url_apiбез фактической подстановки желаемых значений. Если я что-то не понимаю, я не думаю, чтоparams а также headersработать так, как вы от них ожидаете. По крайней мере, сейчас просто создайте нужный 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-строкой, чтобы эти переменные заполнялись, а затем сделал переменные значением строки, которое вы хотите подставить. Была ли ваша первоначальная цель, чтобы запросы заполняли эти переменные? В последнее время я вообще не использовал запросы, так что, возможно, есть более элегантный способ сделать это.

Обратите внимание, что оператор печати не включает ключ. Если передать его в params, он не будет отображаться на консоли. Это напомнило мне... вы ведь поменяли свой ключ API, верно?!?!

Еще раз хочу отметить, что я давно не использовал запросы. Надеюсь, я не перепутал ни один синтаксис или неправильно понял, что вы хотели в исходном коде.

Другие вопросы по тегам