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, верно?!?!
Еще раз хочу отметить, что я давно не использовал запросы. Надеюсь, я не перепутал ни один синтаксис или неправильно понял, что вы хотели в исходном коде.