Создание элемента в Dynamics 365 Business Central с помощью Rest API - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь использовать Microsoft Dynamics Business Central Rest API, чтобы создать элемент, используя следующую конечную точку:

https://api.businesscentral.dynamics.com/v1.0/mydomain.com/api/v1.0/companies({id})/items

Ниже приведен мой код:

string requestBody = JsonConvert.SerializeObject(itemBodyValues);
            string url = "https://api.businesscentral.dynamics.com/v1.0/mydomain.com/api/v1.0/companies({id})/items";
            string encodedCredentials = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(userName + ":" + WebServiceAccessKey));
            HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create(url);

            endpointRequest.ContentType = "application/json";
            endpointRequest.Method = "POST";
            //endpointRequest.Accept = "application/json;odata=verbose";
            using (var streamWriter = new StreamWriter(endpointRequest.GetRequestStream()))
            {

                streamWriter.Write(requestBody);
            }
            endpointRequest.Headers.Add("Authorization", "Basic " + encodedCredentials);
            HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse();

Ниже приводится текст запроса (скопировал его из здесь ):

{
  "number": "1896-S",
  "displayName": "ATHENS Desk",
  "type": "Inventory",
  "blocked": false,
  "baseUnitOfMeasure": {
    "unitCode": "PCS",  //Unit of measure with this code exists in dynamics BC
    "unitName": "Piece",
    "symbol": "",
    "unitConversion": null
  },
  "gtin": "",
  "itemCategory": {
    "categoryId": "TABLE",     //Item category with this code exists in dynamics BC
    "description": "Assorted Tables"
  },
  "inventory": 0,
  "unitPrice": 1000.8,
  "priceIncludesTax": false,
  "unitCost": 780.7,
  "taxGroupCode": "FURNITURE"
}

Когда я пытаюсь выполнить код, то на endpointRequest.GetResponse(); я получаю следующую ошибку:

The remote server returned an error: (400) Bad Request.'

Я пытался создать элемент в почтальоне (базовая c аутентификация), с тем же URL-адресом и телом запроса, и ошибка:

{
    "error": {
        "code": "BadRequest",
        "message": "Does not support untyped value in non-open type.  CorrelationId:  4bc23d7b-f6b3-4eca-ab62-6fb7d37e23ac."
    }
}

Важно отметить этот элемент успешно создается, когда я исключаю свойства baseUnitOfMeasure и itemCategory из тела запроса. Но включение этих свойств вызывает ошибку. Когда я исследовал проблему выше, из разных источников я обнаружил, что такая проблема возникает, когда поле / свойство вводится с ошибкой. Я копирую тело запроса из документа Microsoft, как упоминалось выше, поэтому я не знаю, какое поле вызывает проблему. Пожалуйста, помогите мне решить эту проблему. Спасибо

1 Ответ

0 голосов
/ 19 июня 2020

Для будущих посетителей / читателей:

Потребовались некоторые исследования и разработки, чтобы сообщить мне, что тело запроса, которое можно найти в Microsoft Документ , на самом деле содержит некоторые неправильные Имя свойства. мы можем от go до https://api.businesscentral.dynamics.com/v1.0/ [ваш домен] /api/v1.0/$metadata, где после аутентификации мы получаем XML, который указывает имена свойств, которые следует использовать. Итак, тело запроса, которое я обнаружил работающим:

{
  "number": "1836-S",
  "displayName": "ATHENS Desk",
  "type": "Inventory",
  "blocked": false,
  "baseUnitOfMeasure": {
    "code": "PCS",
    "displayName": "Piece",
    "symbol": "",
    "unitConversion": null
  },
  "gtin": "",
  "itemCategory": {
    "code": "TABLE",  //make sure item category with this code doesn't already exists
    "displayName": "Assorted Tables"
  },
  "inventory": 0,
  "unitPrice": 1000.8,
  "priceIncludesTax": false,
  "unitCost": 780.7,
  "taxGroupCode": ""
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...