Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Sharepoint 2013:通过REST API实现重用_Json_Ajax_Rest_Sharepoint_Sharepoint 2013 - Fatal编程技术网

Json Sharepoint 2013:通过REST API实现重用

Json Sharepoint 2013:通过REST API实现重用,json,ajax,rest,sharepoint,sharepoint-2013,Json,Ajax,Rest,Sharepoint,Sharepoint 2013,我试图确保一些用户通过RESTAPI自动访问。 我的休息电话: $.ajax({ url: "blablabla/_api/web/ensureuser", type: "POST", data: "{ 'logonName': 'i%3A0%23.w%7Cdomain%09logonName' }", headers: { "X-RequestDigest": $("#__REQUESTDIGEST").val(), "accept": "application/json;od

我试图确保一些用户通过RESTAPI自动访问。 我的休息电话:

$.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“不匹配”


调用是按指定的方式生成的。

由于是JSON请求,因此需要显式指定
ContentType
,因此发生此错误:

contentType
(默认值:'application/x-www-form-urlencoded; 字符集=UTF-8')

向服务器发送数据时,请使用此内容类型。默认为 “应用程序/x-www-form-urlencoded;字符集=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|jdoe@contoso.onmicrosoft.com'
ensureUser(_spPageContextInfo.webAbsoluteUrl,loginName)
.done(function(data)
{
    console.log('User has been added');
})
.fail(function(error){
    console.log('An error occured while adding user');
});

由于
ContentType
是JSON请求,因此需要显式指定,因此发生此错误:

contentType
(默认值:'application/x-www-form-urlencoded; 字符集=UTF-8')

向服务器发送数据时,请使用此内容类型。默认为 “应用程序/x-www-form-urlencoded;字符集=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|jdoe@contoso.onmicrosoft.com'
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用户名将包含目标广告用户名

注意:

  • 当对广告用户使用ensureUser方法时,只需使用其 用户名。所以,user\u name应该是这样的:“用户名”。不 需要在任何其他类型的前缀/后缀之前添加“domain\”。 只有用户名

  • ContentType和accept标头必须是application/json;odata=冗长;字符集=utf-8


替代解决方案:

您还可以通过以下方式执行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用户名将包含目标广告用户名

注意:

  • 当对广告用户使用ensureUser方法时,只需使用其 用户名。所以,user\u name应该是这样的:“用户名”。不 需要在任何其他类型的前缀/后缀之前添加“domain\”。 只有用户名

  • ContentType和accept标头必须是application/json;odata=冗长;字符集=utf-8


缺少contentType的部件是正确的-可以使用它。(因为msdn引用什么时候有错误?:O)我不建议使用这个代码示例-缺少错误处理程序会使开发工作变得非常糟糕。
fail
函数在我的示例中用于处理错误,您总是可以从
error
response objectWhoops获得错误详细信息,我不知道。对不起,我在为我的登录名找出正确的语法方面有点问题。如果我在Sharepoint中的登录名通常为i:0#.w | dom\userX“我将如何设置ensureUser方法的登录名?并且@网站的地址是否与SPS UserPrincipalName中指定的地址相同?对于广告用户:只需使用广告用户名,而不使用域或其他任何内容。请确保添加“charset=utf-8”“对你的大脑来说,缺少contentType的部分是正确的,可以使用它。(因为msdn引用什么时候有错误?:O)我不建议使用这个代码示例-缺少错误处理程序会使开发工作变得非常糟糕。
fail
函数在我的示例中用于处理错误,您总是可以从
error
response objectWhoops获得错误详细信息,我不知道。对不起,我在为我的登录名找出正确的语法方面有点问题。如果我在Sharepoint中的登录名通常为i:0#.w | dom\userX“我将如何设置ensureUser方法的登录名?并且@网站的地址是否与SPS UserPrincipalName中指定的地址相同?对于广告用户:只需使用广告用户名,而不使用域或其他任何内容。请确保添加“charset=utf-8”“在我的错误消失之前,我必须将内容类型添加到标题中,就像此解决方案建议的那样。在我的错误消失之前,我必须将内容类型添加到标题中,就像此解决方案建议的那样。