1

REST API と HttpClient を使用して SharePoint 2013 リスト タイトルを更新しようとしています。次のコードがありますが、StatusCode が BadRequest を返しています。

private async void UpdateTitle()
    {
        string webUrl = http://server;
        Uri uri = new Uri(webUrl + "/_api/web/lists/GetByTitle('Old')");
        //start replacement
        HttpClientHandler httpClientHandler = new HttpClientHandler();
        httpClientHandler.UseDefaultCredentials = true;
        HttpClient client = new HttpClient(httpClientHandler);
        client.DefaultRequestHeaders.Add("ContentType", "application/json;odata=verbose");
        string digest = await GetFormDigest("http://devsp13.dev.local/_api/contextinfo");
        client.DefaultRequestHeaders.Add("X-RequestDigest", digest);
        client.DefaultRequestHeaders.Add("X-HTTP-Method", "Merge");
        client.DefaultRequestHeaders.Add("IF-MATCH", "*");

        HttpContent content = new StringContent("{ '__metadata': { 'type': 'SP.List' }, 'Title': 'NewTitle' }");
        HttpResponseMessage response = await client.PostAsync(uri, content);
        response.EnsureSuccessStatusCode();}

私は HttpClient を形成する際に何かを見逃したと思いますが、何を見るのに苦労しています。どんな助けでも大歓迎です。

乾杯、

ジェフ

4

1 に答える 1

0

Accept を HttpClient DefaultRequestHeaders に追加し、代わりに HttpContent ヘッダーに ContentType を設定してみてください。これは私にとってはうまくいきました。

HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
HttpClient client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
client.DefaultRequestHeaders.Add("X-RequestDigest", GetFormDigest());
client.DefaultRequestHeaders.Add("X-HTTP-Method", "MERGE");
client.DefaultRequestHeaders.Add("IF-MATCH", "*");

HttpContent content = new StringContent(metadataString);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
content.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("odata", "verbose"));
HttpResponseMessage response = await client.PostAsync(uri, content);
response.EnsureSuccessStatusCode();
于 2014-03-17T15:32:42.313 に答える