C# 通过RestSharp传递json urlencode

C# 通过RestSharp传递json urlencode,c#,asp.net,json,C#,Asp.net,Json,我有这段代码,我正试图使用它通过RestSharp与API通信 const string task = "pay"; const string command_api_token = "9ufks6FjffGplu9HbaN7uq6XXPPVQXBP"; const string merchant_email_on_voguepay = "mymail@mail.com"; Random rnd = new Random(); string refl = DateTime.Now

我有这段代码,我正试图使用它通过RestSharp与API通信

 const string task = "pay";
 const string command_api_token = "9ufks6FjffGplu9HbaN7uq6XXPPVQXBP";
 const string merchant_email_on_voguepay = "mymail@mail.com";

 Random rnd = new Random();
 string refl =  DateTime.Now + rnd.Next(0,9999999).ToString();
 byte[] hash_target = Encoding.Default.GetBytes(command_api_token + task + merchant_email_on_voguepay + refl);

 string hashD = BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(hash_target)).Replace("-", string.Empty).ToUpper();

 var keyValues = new Dictionary<string, string>
                    {
                         { "task", "pay"},
                         { "merchant", "3333-4444"},
                         { "ref",refl},
                         { "hash",hashD},
                         { "amount", "20"},
                         { "seller", "seller@mail.com"},
                         { "remarks", "payment"},                            

                    };

//serialization using Newtonsoft JSON 
  string json = JsonConvert.SerializeObject(keyValues);

//url encode the json
  var postString = Server.UrlEncode(json);

//calling API with Restsharp
  var client = new RestClient("https://voguepay.com/api/");
  var request = new RestRequest(Method.POST);
  request.AddParameter("json",json);
  IRestResponse response = client.Execute(request);

  Textbox1.Text = response.Content;
const string task=“pay”;
const string命令_api_token=“9ufks6FjffGplu9HbaN7uq6XXPPVQXBP”;
const string merchant_email_on_voguepay=”mymail@mail.com";
随机rnd=新随机();
string refl=DateTime.Now+rnd.Next(0999999.ToString();
byte[]hash\u target=Encoding.Default.GetBytes(命令\u api\u令牌+任务+商家\u电子邮件\u on\u voguepay+refl);
string hashD=BitConverter.ToString(新的SHA512CryptoServiceProvider().ComputeHash(hash_目标)).Replace(“-”,string.Empty).ToUpper();
var keyValues=新字典
{
{“任务”、“支付”},
{“商人”,“3333-4444”},
{“ref”,refl},
{“hash”,hash},
{“金额”,“20”},
{“卖方”seller@mail.com"},
{“备注”,“付款”},
};
//使用Newtonsoft JSON进行序列化
字符串json=JsonConvert.SerializeObject(keyValues);
//url编码json
var postString=Server.UrlEncode(json);
//用Restsharp调用API
var client=新的RestClient(“https://voguepay.com/api/");
var请求=新的重新请求(Method.POST);
AddParameter(“json”,json);
IRestResponse response=client.Execute(请求);
Textbox1.Text=response.Content;
我认为我的代码的安排不是很好,因为我每次移动都会收到错误消息

如果我试着按上面的方式发布,我会

“响应”:“X006”,“描述”:“无效哈希”

如果尝试获取“url编码”使用Restsharp调用API“”中涉及的json“,我会收到如下错误消息

“响应”:“X001”,“说明”:“无效商户Id”

我认为我没有把事情做好,有人能看看我的工作,并指出这段代码可能有什么问题吗

I am using below code for calling API may this one help u.Here i am passing one class object u replace this by Dictionary and try..
public void insertData(OCMDataClass kycinfo, string clientId, string type)
    {
        try
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(System.Configuration.ConfigurationManager.AppSettings["CBService"]);
                string postBody = Newtonsoft.Json.JsonConvert.SerializeObject(kycinfo);
                var jsonString = JsonConvert.SerializeObject(kycinfo);
                var content = new StringContent(jsonString, System.Text.Encoding.UTF8, "application/json");
                var myContent = JsonConvert.SerializeObject(kycinfo);
                var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
                var byteContent = new ByteArrayContent(buffer);
                var result = client.PostAsync("Bfilvid/api/SvcVId/CreateKYCRepository", content).Result;
                if (result.IsSuccessStatusCode)
                {
                    string resultContent = result.Content.ReadAsStringAsync().Result;
                }
                else
                {
                    string resultContent = result.Content.ReadAsStringAsync().Result;
                }
            }

        }
        catch (Exception ex)
        {

        }