我正在尝试通过REST API自动确保一些用户。我的REST电话:
$.ajax({
url: "blablabla/_api/web/ensureuser",
type: "POST",
data: "{ 'logonName': 'i%3A0%23.w%7Cdomain%09logonName' }",
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"accept": "application/json;odata=verbose"
},
success: function () {
console.log("done!");
},
error: function (err) {
console.log(JSON.stringify(err));
}
});
现在发送此调用时,我收到以下错误;
“错误请求:Microsoft.Data.OData.ODataContentTypeException找不到与响应的内容类型匹配的受支持的MIME类型。所支持的类型'application / json; odata = verbose'都不匹配内容类型' application / x-www-form-urlencoded; charset = UTF-8'“
该调用的构建方式与指定的in the msdn reference类似。
发生此错误,因为需要明确指定ContentType
,因为它是一个JSON请求:
contentType
(默认值:'application / x-www-form-urlencoded; charset = UTF-8')将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”
例
function ensureUser(webUrl,loginName)
{
var payload = { 'logonName': loginName };
return $.ajax({
url: webUrl + "/_api/web/ensureuser",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(payload),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"accept": "application/json;odata=verbose"
}
});
}
var loginName = 'i:0#.f|membership|[email protected]'
ensureUser(_spPageContextInfo.webAbsoluteUrl,loginName)
.done(function(data)
{
console.log('User has been added');
})
.fail(function(error){
console.log('An error occured while adding user');
});
替代解决方案:
您还可以通过以下方式执行REST查询:
$.ajax({
url: "http://[website]/_api/web/ensureuser('"+user_name+"')",
type: "POST",
headers: {
'accept': 'application/json;odata=verbose;charset=utf-8',
'Content-Type': 'application/json;odata=verbose;charset=utf-8',
'X-RequestDigest': $("#__REQUESTDIGEST").val()
},
success: function(response_data){ [your custom success action]
},
error: function(response_data){[your custom fail action]}
});
var user_name将包含目标AD用户名。
注意: