【问题标题】:Passing json urlencode via RestSharp通过 RestSharp 传递 json urlencode
【发布时间】:2017-02-21 04:07:09
【问题描述】:

我有这段代码,我试图用它来通过 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;

我认为我的代码安排不太好,因为我每次移动都会收到错误消息。

如果我尝试按照上面的方式发布它,我会得到

"response":"X006","description":"无效哈希"...

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

"response":"X001","description":"Invalid Merchant Id"...

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

【问题讨论】:

    标签: c# asp.net json


    【解决方案1】:
    我正在使用下面的代码来调用 API,这可能对你有帮助。我在这里传递一个类对象,你用 Dictionary 替换它并尝试..
    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)
            {
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多