服务器 Returns REST POST CALL 上的错误请求 400,即使 uri 是正确的
Server Returns Bad Request 400 On REST POST CALL, even though uri is correct
我正在尝试将选项标签和选项值添加到在名为 new_servingtime 的实体上找到的选项集字段 (new_contractserving)。不确定我是否正确执行此操作,但服务器抛出 400 错误请求,这是什么问题?!
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);
HTTP 400
表示坏数据。如果它是 "URI not found" 它将是 HTTP 404
HTTP 400
on a POST
通常意味着,你的请求(requestbody)在服务器端没有通过一些验证或者它没有限制服务器期望的格式
您应该使用 InsertOptionValue 操作将新选项添加到实体中的现有选项列表属性。
CRM REST Builder 是编写此类请求和测试的最佳选择。
你写的请求可以用来设置记录中的属性值,但还是不完整。 Read this blog 了解如何执行 webapi 操作。
我正在尝试将选项标签和选项值添加到在名为 new_servingtime 的实体上找到的选项集字段 (new_contractserving)。不确定我是否正确执行此操作,但服务器抛出 400 错误请求,这是什么问题?!
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);
HTTP 400
表示坏数据。如果它是 "URI not found" 它将是 HTTP 404
HTTP 400
on a POST
通常意味着,你的请求(requestbody)在服务器端没有通过一些验证或者它没有限制服务器期望的格式
您应该使用 InsertOptionValue 操作将新选项添加到实体中的现有选项列表属性。
CRM REST Builder 是编写此类请求和测试的最佳选择。
你写的请求可以用来设置记录中的属性值,但还是不完整。 Read this blog 了解如何执行 webapi 操作。