Сервер возвращает неверный запрос 400 при REST POST CALL, хотя URI указан правильно - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь добавить метку опции и значение опции в поле набора опций (new_contractserving), найденное в объекте с именем new_servingtime. Не уверен, что я делаю это правильно, но сервер выдает запрос 400 Bad, в чем проблема?!

var entity = {

                "new_contractserving": String(OptionValue),
                "new_contractserving@OData.Community.Display.V1.FormattedValue": String(OptionText)
            };

            var reqJSON = new XMLHttpRequest();
            reqJSON.open("POST", url + "/api/data/v8.2/new_servingtimes", false);
            reqJSON.setRequestHeader("OData-MaxVersion", "4.0");
            reqJSON.setRequestHeader("OData-Version", "4.0");
            reqJSON.setRequestHeader("Accept", "application/json");
            reqJSON.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            reqJSON.onreadystatechange = function () {
                if (this.readyState === 4) {
                    reqJSON.onreadystatechange = null;
                    if (this.status === 204) {
                        var uri = this.getResponseHeader("OData-EntityId");
                        var regExp = /\(([^)]+)\)/;
                        var matches = regExp.exec(uri);
                        var newEntityId = matches[1];
                    } else {
                        Xrm.Utility.alertDialog(this.statusText + ": Third Request!");
                        return;
                    }
                }
            };
            reqJSON.send(entity);

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы должны использовать InsertOptionValue Действие для добавления новой опции в существующий атрибут списка выбора в сущности.

CRM REST Builder - лучший выбор для составления таких запросов и тестирования.

Написанный вами запрос может использоваться для установки значения атрибута в записи, но он все еще не завершен. Прочтите этот блог , чтобы понять, как выполнить действие webapi.

0 голосов
/ 04 сентября 2018

HTTP 400 означает неверные данные. Если бы это был "URI не найден", это было бы HTTP 404

HTTP 400 на POST обычно означает, что ваш запрос (requestbody) не прошел проверку на стороне сервера или не ограничен форматом, ожидаемым сервером

...