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