私はRest SharpとPostmanにはまだ新しいですが、私は既存のユーザーに "Update"をしようとしています。ここに私のコードがありますが、私は間違いを知っています。 Rest Sharpで "replace"操作を実行する方法のサンプルを誰かが持っていますか?Rest Sharp Patch Request
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);
ポストマンは、それがこのようなものであるべきと言う:
[
{
"operation": "replace",
"field": "/userName",
"value": "[email protected]"
},
{
"operation": "replace",
"field": "/mail",
"value": "[email protected]"
}
]
私はそのように書くことを好むだろうが、私はどのようには考えています。他のコードは、私は文字列を作ることを提案した。私はストリングを介してそれを書くことができますが、私は可能であれば、身体に書き込むことを好む。事前
編集のおかげで:ここで
は私のクラスである:
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; }
}
私は何をする必要があるかと思うだけでなく、現在のフィールドと値を渡し、そして渡すことでしょうがフィールドの新しい値Restsharpを使って更新リクエストを実行している他の人のサンプルコードを探しています。私はそれをすべて文字列で書くことができますが、私は簡単な方法で文字列を使用し、パラメータとして渡すことを望んでいます。
編集
私は現在、パラメータとして渡すための文字列を構築することにより、それをやろうとしています。私は良い方法がなければならないことを知っています。ここに私の現在の進行状況があります。
郵便集配人文字列:
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);
進行中の私の文字列ビルダ機能:
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;
}
}
誰もがこれを行うには良い方法がありますか?
私はクラスを作成し、そのクラスの特定のオブジェクトを直列化するためにAddBodyを使用することができます、あなたの問題を簡素化する必要がありますと信じています。 –
あなたの体は配列でなければなりません。 'request.AddBody(new [] {....})' – Amy
共有して値を更新して置き換えることを示すコードスニペットがありますか? – mholmes3038