Код C # для массового обновления / вставки элемента списка SharePoint с помощью вызова API Rest - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь выполнить массовое обновление в списке sharepoint, просматривая идентификаторы элементов, как показано в коде ниже.Однако он просто успешно обновляется в первый раз.Второе обновление выдает ошибку, поскольку «Код состояния ответа не указывает на успех: 403».

Я следовал за этим URL-кодом C #, чтобы обновить элемент списка SharePoint с помощью вызова API Rest

Uri uri = new Uri(ConfigurationManager.AppSettings["SiteUrl"]);
            using (var client = new SPHttpClient(uri, ConfigurationManager.AppSettings["userName"], ConfigurationManager.AppSettings["password"]))
            {
                var listTitle = "sp_sample";
                var itemId = 1;
                var itemPayload = new { __metadata = new { type = "SP.Data.sampleListItem" }, Title = "Phani", Place = "Hyderabad" };
                for (int i = 1; i <= 3; i++)
                {
                    itemId = i;
                    var endpointUrl = string.Format("{0}/_api/web/lists/getbytitle('{1}')/items({2})", uri, listTitle, itemId);
                    var headers = new Dictionary<string, string>();
                    headers["IF-MATCH"] = "*";
                    headers["X-HTTP-Method"] = "MERGE";
                    client.ExecuteJson(endpointUrl, HttpMethod.Post, headers, itemPayload);
                    Console.WriteLine("Task item has been updated");

                }

Пожалуйста, поделитесь, если у нас есть встроенная функция для массового обновления / вставки.Или любой код для массового обновления или вставки.

Любое руководство будет полезно.

1 Ответ

1 голос
/ 10 июня 2019

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

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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...