Я пытаюсь выполнить приведенную ниже функцию python, чтобы проверить состояние счета из внешнего API:
def getInvoice(inv_id): response = requests.get("https://api.example.com/invoices/"+str(inv_id)+"?access_token=123456789").json() return response print(getInvoice("5b5f60384b3f"))
Когда я пытаюсь вызвать функцию, я получаю следующую ошибку:
Traceback (most recent call last): File "C:\Users\user\Desktop\app\db.py", line 82, in <module> print(getInvoice("5b5f60384b3f")) File "C:\Users\user\Desktop\app\db.py", line 79, in getInvoice response = requests.get("https://api.example.com/invoices/"+str(inv_id)+"?access_token=123456789").json() TypeError: unhashable type: 'set' [Finished in 3.0s]
Я не понимаю, почему это происходит, или где «набор»?Любая помощь очень ценится.
Как уже упоминалось, похоже, что сервер не отвечает с JSON.
Измените функцию getInvoice и проверьте ответ сервера:
getInvoice
def getInvoice(inv_id): url = "https://api.example.com/invoices/{}?access_token=123456789".format(inv_id) response = requests.get(url) response.raise_for_status() # you will get an exception if HTTP status code != 200 try: return response.json() except: # for debugging purposes only print("Failed to obtain JSON response. Response contents:\n{}".format(response.text)) raise
Похоже, ваш URL не возвращает JSON-ответ. Я предлагаю вам скопировать код, прочитав ответ в виде текста и проверить, что он действительно содержит.
import urllib.request contents = urllib.request.urlopen("https://api.example.com/invoices/"+str(inv_id)+"?access_token=123456789").read() print(contents);