Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
C#使用Rest API调用执行批量更新/插入SharePoint列表项的代码_C#_Sharepoint - Fatal编程技术网

C#使用Rest API调用执行批量更新/插入SharePoint列表项的代码

C#使用Rest API调用执行批量更新/插入SharePoint列表项的代码,c#,sharepoint,C#,Sharepoint,我正试图通过循环项目ID在sharepoint列表中进行批量更新,如下代码所示。然而,它只是第一次成功更新。 第二次更新出现错误,因为“响应状态代码不表示成功:403” 我遵循了这个url Uri=newuri(ConfigurationManager.AppSettings[“SiteUrl]”); 使用(var client=new SPHttpClient(uri、ConfigurationManager.AppSettings[“用户名”]、ConfigurationManager.A

我正试图通过循环项目ID在sharepoint列表中进行批量更新,如下代码所示。然而,它只是第一次成功更新。 第二次更新出现错误,因为“响应状态代码不表示成功:403”

我遵循了这个url

Uri=newuri(ConfigurationManager.AppSettings[“SiteUrl]”);
使用(var client=new SPHttpClient(uri、ConfigurationManager.AppSettings[“用户名”]、ConfigurationManager.AppSettings[“密码”]))
{
var listTitle=“sp_样本”;
var itemId=1;
var itemPayload=new{{uuu metadata=new{type=“SP.Data.sampleListItem”},Title=“Phani”,Place=“hydrabad”};

对于(inti=1;iDid测试并找到由重复请求头引起的问题,请尝试下面的更新方法

public JObject ExecuteJson<T>(string requestUri, HttpMethod method, IDictionary<string, string> headers, T payload)
        {
            HttpResponseMessage response;
            switch (method.Method)
            {
                case "POST":
                    var requestContent = new StringContent(JsonConvert.SerializeObject(payload));
                    requestContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=verbose");
                    var Digest = RequestFormDigest();
                    DefaultRequestHeaders.Clear();
                    DefaultRequestHeaders.Add("X-RequestDigest", Digest);
                    if (headers != null)
                    {
                        foreach (var header in headers)
                        {
                            DefaultRequestHeaders.Add(header.Key, header.Value);
                        }
                    }
                    response = PostAsync(requestUri, requestContent).Result;
                    break;
                case "GET":
                    response = GetAsync(requestUri).Result;
                    break;
                default:
                    throw new NotSupportedException(string.Format("Method {0} is not supported", method.Method));
            }

            response.EnsureSuccessStatusCode();
            var responseContent = response.Content.ReadAsStringAsync().Result;
            return String.IsNullOrEmpty(responseContent) ? new JObject() : JObject.Parse(responseContent);
        }
PublicJobject ExecuteJson(字符串请求URI、HttpMethod方法、IDictionary头、T负载) { HttpResponseMessage响应; 开关(方法,方法) { 案例“职位”: var requestContent=newstringcontent(JsonConvert.SerializeObject(payload)); requestContent.Headers.ContentType=MediaTypeHeaderValue.Parse(“应用程序/json;odata=verbose”); var Digest=RequestFormDigest(); DefaultRequestHeaders.Clear(); 添加(“X-RequestDigest”,摘要); 如果(标题!=null) { foreach(标头中的var标头) { DefaultRequestHeaders.Add(header.Key,header.Value); } } response=PostAsync(requestUri,requestContent); 打破 案例“GET”: response=GetAsync(requestUri).Result; 打破 违约: 抛出新的NotSupportedException(string.Format(“方法{0}不受支持”,Method.Method)); } response.EnsureSuccessStatusCode(); var responseContent=response.Content.ReadAsStringAsync().Result; 返回字符串.IsNullOrEmpty(responseContent)?new JObject():JObject.Parse(responseContent); }
403表示您的请求没有权限,您使用的是哪个版本?SharePoint内部/在线?身份验证将不同。@Lee_MSFT,是的,这也有点让人困惑。如果您看到,我在一开始就提到过,我可以处理单个项目,但如果我循环使用多个ID,则会抛出403错误。Pro宝贝,我不正确地循环它,或者我丢失了一些内置函数,可以帮助批量更新/插入。请建议。我理解,因为我们需要提前清除标题以获得新的标题。只是想知道,我们是否有一些函数或方法可以避免for循环来更新每个项目。是否有可能获得所有updjson格式的数据(我可以做到)在一个头请求中,所有数据都得到正确更新??
public JObject ExecuteJson<T>(string requestUri, HttpMethod method, IDictionary<string, string> headers, T payload)
        {
            HttpResponseMessage response;
            switch (method.Method)
            {
                case "POST":
                    var requestContent = new StringContent(JsonConvert.SerializeObject(payload));
                    requestContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=verbose");
                    var Digest = RequestFormDigest();
                    DefaultRequestHeaders.Clear();
                    DefaultRequestHeaders.Add("X-RequestDigest", Digest);
                    if (headers != null)
                    {
                        foreach (var header in headers)
                        {
                            DefaultRequestHeaders.Add(header.Key, header.Value);
                        }
                    }
                    response = PostAsync(requestUri, requestContent).Result;
                    break;
                case "GET":
                    response = GetAsync(requestUri).Result;
                    break;
                default:
                    throw new NotSupportedException(string.Format("Method {0} is not supported", method.Method));
            }

            response.EnsureSuccessStatusCode();
            var responseContent = response.Content.ReadAsStringAsync().Result;
            return String.IsNullOrEmpty(responseContent) ? new JObject() : JObject.Parse(responseContent);
        }