Получение ошибки 400 при публикации запроса JSON с использованием Python - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь отправить запрос POST JSON с использованием Python и, похоже, получаю ошибку 400 с ошибкой синтаксического анализа. Этот же запрос прекрасно работает в Почтальоне. Я не могу понять, что я делаю неправильно, и ценю любые указатели.

Тело запроса почтальона, которое работает:

{
          "document":
        {
            "name": "TestWebiDOC_doc",
            "folderId":1112223}
} 

Сообщение об ошибке, что я получение от службы REST при использовании Python:

{"error_code":"400","message":"ParseError at [row,col]:[0,1]\nMessage: A JSONObject text must begin with '{' at character 1 of \"{\\\"document\\\": {\\\"name\\\": \\\"TestWebiDOC_doc\\\", \\\"folderId\\\": \\\"1112223\\\"}}\". "}

Python Код Ниже для отправки запроса JSON - не удается сузить, что я делаю неправильно:

def create_document(token):
    data = {
            'document':
                {
                    'name' : 'TestWebiDOC_doc',
                    'folderId' : '1112223'}
            }
    headers = {'Content-Type' : 'application/json',
               'Accept' : 'application/json',
               'X-SAP-LogonToken' : token}
    path = _url('/documents/')
    response = requests.post(path, json=json.dumps(data), headers=headers)
    print(response.text)
    print('\nURL to create document : {}'.format(path))
    if response.status_code != 200:
        print('\nUnable to create document: {}'.format(response.status_code))
    else:
        document_id = response['success']['id']
        print('\nCreated document with id : {}'.format(document_id))
        return document_id

1 Ответ

1 голос
/ 19 марта 2020

Вам просто нужно передать сам словарь в качестве аргумента requests.post, например:

response = requests.post(path, json=data, headers=headers)

Затем, чтобы получить идентификатор из ответа, выполните:

response.json()['success']['id']
...