Ich bin noch sehr neu zu Rest Sharp und Postman, aber ich versuche, ein "Update" zu einem bestehenden Benutzer zu machen. Hier ist mein Code, aber ich weiß es falsch. Hat jemand Beispiele, wie man in Rest Sharp eine "Ersetzen" -Operation durchführt?Rest Sharp Patch Anfrage
string url = _EndPoint + "?_action = patch & _queryId =for-userName & uid =" + obj.userName.ToString();
var client = new RestClient(url);
var request = new RestRequest(Method.POST);
string username = "openidm-admin";
string password = "openidm-admin";
string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(username + ":" + password));
string Update = BuildUpdate();
//if (Update != null)
//{
request.AddHeader("Authorization", "Basic " + svcCredentials);
request.AddHeader("content-type", "application/json");
//request.AddParameter("application/json", "[\n {\n \"operation\": \"replace\",\n \"field\": \"/userName\",\n \"value\": \"[email protected]\"\n },\n {\n \"operation\": \"replace\",\n \"field\": \"/mail\",\n \"value\": \"[email protected]\"\n }\n]", ParameterType.RequestBody);
request.AddBody({ "operation": "replace", "field": "/userName", "value": "[email protected]"}, { "operation": "replace", "field": "/mail", "value": "[email protected]"});
IRestResponse response = client.Execute(request);
Postman sagt, es ist so etwas wie dies sein sollte:
[
{
"operation": "replace",
"field": "/userName",
"value": "[email protected]"
},
{
"operation": "replace",
"field": "/mail",
"value": "[email protected]"
}
]
Ich würde es vorziehen, es so zu schreiben, aber ich habe keine Ahnung wie. Der andere Code schlug vor, dass ich eine Zeichenfolge mache. Ich kann es über eine Schnur ausschreiben, aber ich bevorzuge es, es in den Körper zu schreiben, wenn ich kann oder möglich. Vielen Dank im Voraus
Edit:
Hier ist meine Klasse:
public class IdentityDetails
{
//public const string type = "user";
//public const string realm = "dc=aha,dc=org";
public string userName { get; set; }
public string mail { get; set; }
public string givenName { get; set; }
public string sn { get; set; }
public string accountStatus { get; set; }
public string avectraId { get; set; }
public string AHApw { get; set; }
public string password { get; set; }
public string ahaBirthYear { get; set; }
public string city { get; set; }
public string ahaGender { get; set; }
public string ahaJobTitle { get; set; }
public string ahaLeadScore { get; set; }
public string stateProvince { get; set; }
public string orgId { get; set; }
public string[] ahaMemberGroup { get; set; }
public string[] ahaMemberType { get; set; }
public string regMethod { get; set; }
//public string[] ahaDrupalPermission { get; set; }
}
Ich denke, was ich auch tun müssen, obwohl im aktuellen Feld und Wert übergeben wird, und übergeben der neue Wert für das Feld Ich bin nur auf der Suche nach einem Beispielcode von jemand anderem, der eine Updateanforderung mit Restsharp ausführt. Ich könnte alles in einer Zeichenfolge schreiben, aber ich hoffe auf einen einfacheren Weg als mit einem String und der Übergabe als Parameter.
bearbeiten
ich zur Zeit versucht, es zu tun, indem Sie einen String Aufbau als Parameter übergeben in. Ich weiß, dass es einen besseren Weg geben muss. Hier ist mein aktueller Fortschritt beim Aufbau einer Saite;
Postman String:
request.AddParameter("application/javascript", "[\n {\n \"operation\": \"replace\",\n \"field\": \"/userName\",\n \"value\": \"[email protected]\"\n },\n {\n \"operation\": \"replace\",\n \"field\": \"/mail\",\n \"value\": \"[email protected]\"\n }\n]", ParameterType.RequestBody);
Meine String-Builder-Funktion in progress:
private string BuildUpdate(string field, string newvalue, string oldvalue)
{
try
{
string Update = string.Empty;
string UpdateOperation = '"' + "operation" + '"' + ": " + '"' + "replace\"" + ",\n" + '"';
string Updatefield = "field" + '"' + ": \"";
string UpdateNewValue = "/" + newvalue + '"' + ",\n";
string
// "[\n {\n \"operation\": \"replace\",\n\"
// field\": \"
// /userName\",\n
// \"value\": \"[email protected]\"\n },\n {\n \"operation\": \"replace\",\n \"field\": \"/mail\",\n \"value\": \"[email protected]\"\n }\n]"
return Update;
}
catch(Exception ex)
{
return null;
}
}
Wer einen besseren Weg, dies zu tun?
Ich glaube, Sie können eine Klasse erstellen und AddBody verwenden, um das bestimmte Objekt dieser Klasse zu serialisieren, was Ihr Problem vereinfachen sollte. –
Ihr Körper sollte ein Array sein. 'request.AddBody (new [] {....})' – Amy
Haben Sie ein Code-Snippet, das Sie teilen können, wenn Sie einen Wert aktualisieren und ersetzen? – mholmes3038