Как разместить объект в api sonicwall с помощью python?

#python #api #sonicwall

Вопрос:

недавно мой администратор спросил меня, могу ли я создать приложение для ввода некоторых данных в наш Sonicwall. Я нашел какой-то API, создал учетную запись и запустил несколько методов «get», которые работали просто отлично. Сейчас я пытаюсь включить новый объект в наши правила pv4 и не могу с этим смириться. Проблема в том, что когда я пишу что-то вроде этого:

 def postIpv4Object(session):
body = {
    "address_objects": [{
            "ipv4": {
                "name": "Test 1",
                "zone": "LAN",
                "host": {
                    "ip": "192.168.168.10"
                }
            }
        }
    ]
}

resp = session.post(fw   '/api/sonicos/address-objects/ipv4', headers=good_headers,params=body, verify=False)
 

Я все еще получаю эту ошибку:

 {'status': {'info': [{'code': 'E_INVALID_API_CALL',
                  'level': 'error',
                  'message': 'Expected a request body.'}],
        'success': False}}
 

Я читаю документы, но не могу этого понять. Кто-нибудь пробовал это и немного помогает мне?

Комментарии:

1. Просто выкидываю это здесь, так как я не играл с новой ОС sonicwall с поддержкой API, но что произойдет, если вы заполните адрес api вместо использования переменной FW. Я предполагаю, что вы где-то это определили…

2. Это был не тот случай. Кейс был объектом «Тело». Это должен быть тип JSON, мой был просто диктантом. Простое преобразование сделало свое дело.

3. Это приятно знать, рад, что вы это исправили, я начну с этим играть, мы все еще используем 6.5 в нашем офисе для наших клиентов 🙁

Ответ №1:

После пары дней попыток я решил, что «тело» должно быть преобразовано в тип JSON, и вместо «параметров «мне нужно использовать»данные».