2017-12-29 14 views
0

rest apiを使用してsharepointオンラインで複数選択フィールドを更新しようとしています。私は401悪い要求のエラーを取得しています。rest apiを使用してsharepoint内の複数選択フィールドを更新

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("XXXXX/_api/web/getfilebyserverrelativeurl('/sites/Sample/TestDoc.docx')/ListItemAllFields/"); 

string stringData = 
@"{'__metadata': { 'type':'SP.ListItem' }, 
'TestColumn': { '__metadata': { 'type' : 'Collection(Edm.String)', results: ['Test1']}}}"; 

request.ContentLength = stringData.Length; 

StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(stringData); 
writer.Flush(); 

response = (HttpWebResponse)request.GetResponse(); 

ヘルプがありますか?

答えて

0

はほとんどのペイロードはあなたの例では無効です:

string stringData = 
@"{'__metadata': { 'type':'SP.ListItem' }, 
'TestColumn': { '__metadata': { 'type' : 'Collection(Edm.String)', results: ['Test1']}}}"; 

ポイントはあなたの例では、それはドキュメントライブラリである、タイプ​​はGenericリストに対応しています。

ので、提供される必要がある有効エンティティタイプ名、あなたがmetadata typeを決定するには、次のエンドポイントを利用することができる:

エンドポイント:

Url: /_api/lists/getbytitle('<list title>')?$select=ListItemEntityTypeFullName 
Method: GET 

第二に、更新操作が必要ですリクエストで指定するプロパティを次に示します。

  • POST動詞を使用してHTTP要求を作成します。
  • X-HTTP-Methodヘッダーに値MERGEを追加します。
  • If-Matchヘッダーにエンティティの元のETagの値を追加します。

詳しくはthis postを参照してください。

そして最後が、ありません少なくとも、Content-TypeAcceptリクエストヘッダには、例えば、(詳細はthis articleに従う)に指定する必要があります

request.Accept = "application/json;odata=verbose"; 
request.ContentType = "application/json;odata=verbose"; 
次の例では、それをまとめたもので、どのように示してい

複数選択項目の値を更新:

var requestUrl = $"{webUrl}/_api/web/getfilebyserverrelativeurl('{fileUrl}')/ListItemAllFields"; 
var request = (HttpWebRequest)WebRequest.Create(requestUrl); 
request.Credentials = GetCredentials(userName, password); 
request.Accept = "application/json;odata=verbose"; 
request.ContentType = "application/json;odata=verbose"; 
request.Method = "POST"; 
request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); 
request.Headers.Add("X-RequestDigest", formDigestVal); 
request.Headers.Add("X-HTTP-Method", "MERGE"); 
request.Headers.Add("If-Match", "*"); 


var payload = @"{ 
         '__metadata': { 'type':'SP.Data.Shared_x0020_DocumentsItem' }, 
         '<ColumnName>': { '__metadata': { 'type' : 'Collection(Edm.String)'}, results: ['Val1']} 
     }"; 

request.ContentLength = payload.Length; 
var writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(payload); 
writer.Close(); 

var response = (HttpWebResponse)request.GetResponse(); 
関連する問題