Так что я новичок в API, но стараюсь больше практиковаться с ними. У меня нормальное соединение (200), но всякий раз, когда я пытаюсь распечатать результаты, я получаю эту ошибку:
{"jsonrpc": "2.0", "error": {"code": - 32700, "message": "Ошибка синтаксического анализа", "data": null}, "id": null}
Вот мой код с отредактированным ключом api:
url = 'https://api.random.org/json-rpc/1/invoke'
data = {'jsonrpc':'2.0','method':'generateIntegers','params': {'apiKey':'mykeygoeshere','n':10,'min':1,'max':10,'replacement':'true','base':10},'id':24565}
response = requests.get(url,data)
print(response.text)
Любая помощь приветствуется
Спасибо, ваш комментарий заработал, просто нужно было изменить тип запроса и вызвать json.dumps (data)






import requests
import json
url = 'https://api.random.org/json-rpc/1/invoke'
data = {'jsonrpc':'2.0','method':'generateIntegers','params': {'apiKey':'mykey','n':10,'min':1,'max':10,'replacement':'true','base':10},'id':24565}
params = json.dumps(data)
response = requests.post(url,params)
print(response.text)
Это не работает с текущей версией API.
Этот код работает в версии 2
import requests
import json
raw_data = {
"jsonrpc": "2.0",
"method": "generateIntegers",
"params": {
"apiKey": "your-api-key",
"n": 6,
"min": 1,
"max": 6,
"replacement": True
},
'id':1
}
headers = {'Content-type': 'application/json','Content-Length': '200', 'Accept': 'application/json'}
data=json.dumps(raw_data)
response = requests.post(
url='https://api.random.org/json-rpc/2/invoke',
data=data,
headers=headers
)
print(response.text)
Пожалуйста, добавьте пояснения к вашему коду.
Итак, для random.org вам нужно отправить запрос на публикацию по URL-адресу
https://api.random.org/json-rpc/2/invoke
с данными, которые хранятся в переменной raw_data, но сначала вы должны преобразовать объект словаря в формат json, это можно сделать с помощью строки
data=json.dumps(raw_data)
и переменная заголовков хранит формат запроса POST
Запрос выполняется с помощью метода отправки модуля запросов.
а затем мы получаем ответ в формате json, который преобразуется в формат для печати с помощью
print(response.text)
обязательно сохраните свой api_key в переменной raw_data
Если вы посмотрите на их собственная реализация, вы увидите, что они используют
POST, а неGET, и сначала запускают параметрdataчерезjson.dumps(). Они также устанавливают заголовки, что вы, вероятно, тоже должны сделать. Однако я не уверен, что их код актуален - ему 5 лет. Тем не менее, поскольку вы хотите узнать больше об API, это должно быть весьма полезно, если вы хотите узнать, как правильно используется их собственный API.