2017-12-29 9 views
0

Ich versuche, das Multiple-Choice-Feld in Sharepoint online mit Rest API zu aktualisieren. Ich erhalte 401 Fehler bei fehlerhaften Anfragen.Update Multiple-Choice-Feld in Sharepoint mit Rest-API

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(); 

Irgendwelche Hilfe?

Antwort

0

Höchstwahrscheinlich wird die Nutzlast ist ungültig in Ihrem Beispiel:

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

Der Punkt ist der Typ SP.ListItem-Generic Liste entspricht, in Ihrem Beispiel ist es eine Dokumente Bibliothek.

So ein gültigEntitätstyp Name zur Verfügung gestellt werden muss, können Sie den folgenden Endpunkt nutzen metadata type zu bestimmen:

Endpunkt:

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

Zweitens ist der Aktualisierungsvorgang das erfordert Folgende Eigenschaften werden mit der Anfrage angegeben:

  • Erstellen Sie eine HTTP-Anfrage mit dem Verb POST.
  • Fügen Sie einen X-HTTP-Method Header mit einem Wert von MERGE hinzu.
  • Fügen Sie einen If-Match Header mit einem Wert des ursprünglichen ETag der Entität hinzu.

Sie könnten für weitere Details this post verweisen.

Und last but not least, Content-Type und Accept Request-Header muss (folgen this article für eine weitere Details) angegeben werden, zum Beispiel:

request.Accept = "application/json;odata=verbose"; 
request.ContentType = "application/json;odata=verbose"; 

Das folgende Beispiel es zusammenfasst und zeigt, wie Multi-Choice-Feldwert aktualisieren:

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(); 
Verwandte Themen