Python API вызывает Random.org

Так что я новичок в 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) 

Любая помощь приветствуется

Если вы посмотрите на их собственная реализация, вы увидите, что они используют POST, а не GET, и сначала запускают параметр data через json.dumps(). Они также устанавливают заголовки, что вы, вероятно, тоже должны сделать. Однако я не уверен, что их код актуален - ему 5 лет. Тем не менее, поскольку вы хотите узнать больше об API, это должно быть весьма полезно, если вы хотите узнать, как правильно используется их собственный API.

Random Davis 07.11.2018 23:49

Спасибо, ваш комментарий заработал, просто нужно было изменить тип запроса и вызвать json.dumps (data)

Alec 08.11.2018 18:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
882
3

Ответы 3

    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.

mikkokotila 16.09.2019 09:00

Этот код работает в версии 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)

Пожалуйста, добавьте пояснения к вашему коду.

Muhammedogz 23.09.2021 10:14

Итак, для 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

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