Запись полей через REST API
Добавлено: 17 апр 2019, 15:19
Предложения, сообщения об ошибках, помощь!
https://forum.rukovoditel.net.ru/
Код: Выделить всё
import requests
import openpyxl as xl
url = "http://----------------/rukovoditel/api/rest.php"
BOOK = '/home/sas/Documents/РУКОВОДИТЕЛЬ-2019-04-05_v1.xlsx'
query_pattern = '''{
"key":"---------------",
"username": "admin",
"password": "admin",
"action": "%s",
"entity_id": %s,
%s
}'''
def send_contract_json(contract_list):
for e in contract_list:
items = '''"items": {
"field_454": %s,
"field_455": "%s"
}''' % (str(e[0]), str(e[1]))
query = query_pattern % (u"insert", str(42), items)
print(query)
response = requests.post(url, data=query.encode('utf-8'))
print(response.status_code, response.content, "\n")
Что то я не понял, можно по подробнее? Какого формата должна быть строка, чтобы запрос обрабатывался корректно?
Понял, исправил, теперь ошибка выглядит так:support писал(а): ↑18 апр 2019, 13:01 Смотрите пример тут https://www.rukovoditel.net/ru/api.html
Переменные передаются как POST переменные, а не как json строка.
Код: Выделить всё
{
'items': [
{'field_454': 1, 'field_455': '-----'},
{'field_454': 2, 'field_455': '-----'},
{'field_454': 3, 'field_455': '-----'},
{'field_454': 4, 'field_455': '-----'},
{'field_454': 5, 'field_455': '-----'},
{'field_454': 6, 'field_455': '-----'},
{'field_454': 7, 'field_455': '-----'},
{'field_454': 8, 'field_455': '-----'},
{'field_454': 9, 'field_455': '-----'},
{'field_454': 10, 'field_455': '-----'},
{'field_454': 11, 'field_455': '-----'},
{'field_454': 12, 'field_455': '-----'}
],
'entity_id': 42,
'username': 'admin',
'key': 'apikey,
'password': 'admin',
'action': 'insert'
}
Код: Выделить всё
200 b'{"status":"error","error_code":"","error_message":"items is not array"}'
Код: Выделить всё
'items': [
['field_454': 1, 'field_455': '-----'],
Такое, к сожалению, невозможно, в квадратных скобках массив, в кудрявых словарь(dictionary, map). То есть формат поле:значение возможен только в словареsupport писал(а): ↑18 апр 2019, 14:44 Полагаю что должно быть такКод: Выделить всё
'items': [ ['field_454': 1, 'field_455': '-----'],