Stack Overflow на русском Asked by Master Wenom on November 15, 2021
Python только начал изучать, по этому сильно не критикуйте.
Имеется скрипт отправки данных в API:
import requests
import json
AUTHURL = 'https://<здесь мой логин>.amocrm.ru/private/api/auth.php'
TESTURL = 'https://<здесь мой логин>.amocrm.ru/api/v2/account?with=pipelines,groups,note_types,task_types'
FORMURL = 'https://<здесь мой логин>.amocrm.ru/api/v2/incoming_leads/form'
CONTACTURL = 'https://<здесь мой логин>.amocrm.ru/api/v2/contacts'
LEADS = 'https://<здесь мой логин>.amocrm.ru/api/v2/leads'
AUTHDATA = {'USER_HASH': '<здесь мой ключ API>', 'USER_LOGIN': '<здесь мой логин>'}
POSTPARAMS = {'api_key': '<здесь мой ключ API>', 'login': '<здесь мой логин>'}
headers = {'Content-type': 'application/json'}
JSONFORMDATA = {
"add": [
{
"source_name": "WEB сайт",
"source_uid": "a1fee7c0fc436088e64ba2e8822ba2b3",
"created_at": "1529007000",
"incoming_entities": {
"leads": [
{
"name": "Покупка"
}
],
"contacts": [
{
"name": "Федя",
"responsible_user_id": "1903006",
"custom_fields": [
{
"id": "382707",
"values": [
{
"value": "+77777777777",
"enum": "WORK"
}
]
},
{
"id": "389993",
"values": [
{
"value": "sfgh3gh233h3h3h3"
}
]
},
{
"id": "389995",
"values": [
{
"value": "Обратный звонок"
}
]
}
]
}
]
},
"incoming_lead_info": {
"form_id": "329248",
"form_page": "vdtest.ru",
"ip": "127.0.0.1",
"service_code": "QkKwSam8"
}
}
]
}
CONTACTDATA = {"add": [{"name": "Тест"}]}
LEADSDATA = {
"add": [{"name": "Тест", "custom_fields": [{"id": 385885, "values": [{"value": "web"}]}]}]}
# Инициализируем сессию
session = requests.Session()
response = session.get(url=AUTHURL)
# print('Инициализация сессии:')
# print(session.cookies.get_dict())
# print(response.status_code)
# Автроизация и проверка cookie
authorisation = session.post(url=AUTHURL, params=AUTHDATA)
# print('Авторизация и проверка сессии:')
# print(session.cookies.get_dict())
# print(authorisation.status_code)
# Выполняем тестовый запрос
getuserdata = session.get(url=TESTURL, params=POSTPARAMS)
# testdata = getuserdata.json()
# print('Тестовый запрос данных учётной записи:')
# print(testdata)
# print(getuserdata.status_code)
# Отправка формы
formpostdata = session.post(url=FORMURL, params=POSTPARAMS, json=JSONFORMDATA, headers=headers)
# print(formpostdata.status_code, formpostdata.reason)
# print('Дополнительная проверка сессии:')
# print(session.cookies.get_dict())
formpostdataj = formpostdata.json()
print('Ответ от API:')
print(formpostdataj)
contactsend = session.post(url=CONTACTURL, params=POSTPARAMS, json=CONTACTDATA, headers=headers)
formpostdatac = contactsend.json()
print(formpostdatac)
leadssend = session.post(url=LEADS, params=POSTPARAMS, json=LEADSDATA, headers=headers)
formpostdatal = leadssend.json()
print(formpostdatal)
JSON
данные JSONFORMDATA
не уходят, API возвращает ошибку 400. Грешил на саму API. НО проверил потом отправку других данных CONTACTDATA и LEADSDATA, API принимает. Попробовал отправку JSON данные JSONFORMDATA через PHP
, API запрос принял и успешно обработал.
Вот никак не могу разобраться где у меня ошибка, массив JSONFORMDATA копирую из конструктора API, так же как и CONTACTDATA и LEADSDATA.
Думаю проблема в Python
, может я что то не так делаю?
Вот ответы от API:
{'status': 'fail', 'error': 'Invalid data', 'error_code': 400, '_links': {'self': {'href': '/api/v2/incoming_leads/form?api_key=<здесь мой код API>&login=<здесь мой логин>', 'method': 'post'}}}
{'_links': {'self': {'href': '/api/v2/contacts', 'method': 'post'}}, '_embedded': {'items': [{'id': 12715121, 'request_id': 0, '_links': {'self': {'href': '/api/v2/contacts?id=12715121', 'method': 'get'}}}]}}
{'_links': {'self': {'href': '/api/v2/leads', 'method': 'post'}}, '_embedded': {'items': [{'id': 4844053, 'request_id': 0, '_links': {'self': {'href': '/api/v2/leads?id=4844053', 'method': 'get'}}}]}}
Ваше предположение о том что API не принимает JSON неверно:
requests.post(url, json=JSONFORMDATA)
Answered by chip on November 15, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP