Получение 400 неверных запросов при вызове Licenspring webhook api - PullRequest
1 голос
/ 25 мая 2020

Я использую оконную форму и вызываю метод Licensespring webhook api checklicense и получаю 400 неверных запросов. Я хотел проверить, создал ли пользователь свою пробную лицензию на основе идентификатора оборудования, имени пользователя и названия продукта. Ниже вы можете найти мой код.

  private static async  void GetLicenseKeyByHardwareIdAndUser(string productCode)
         {
                    string sharedKey = "MVc12g949M7d1XiUM1F2gcJzNzKnXAaTgjrvEzh7AZc";
                    var apiKey = "ccdab2c7-0aa7-4c86-9d79-989f37980dce";

                    var hardwareId = "82A9-EA17-7F62-3BB9-F06A-659C-2280-8F9C-9470-BDC8-B2A2-9BEC-5B23-E89F-362D-1D99";

                    var product = "vp";

                    var username = "John@gmail.com";

                    var builder = new UriBuilder("https://api.licensespring.com/api/v4/check_license");
                    builder.Port = -1;
                    //generating url with query string having parameter hardware_id,username and product.
                    var query = HttpUtility.ParseQueryString(builder.Query);
                    query["hardware_id"] = hardwareId+"&";
                    query["username"] = username + "&";
                    query["product"] = product;

                    builder.Query = query.ToString();
                    string url = builder.ToString();

                    var date = DateTime.UtcNow.ToString();

                    //Preparing signed request header key
                    var authorization = string.Format("algorithm=hmac-sha256,headers=date," +
                        "signature={0},apikey={1}",CreateSHA256Signature(sharedKey), apiKey);

                    ServicePointManager.Expect100Continue = true;
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                    var request = new HttpRequestMessage(HttpMethod.Get, new Uri(url));

                         //Adding headers here 
                        request.Headers.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));
                        request.Headers.TryAddWithoutValidation("Date", date);
                        request.Headers.TryAddWithoutValidation("Authorization", authorization);

                    //Send the request.
                   var response = await new HttpClient().SendAsync(request);
                    if (response.IsSuccessStatusCode)
                        {
                            var fileJsonString = await response.Content.ReadAsStringAsync();

                            var result = JsonConvert.DeserializeObject<dynamic>(fileJsonString).ToList();
                        }

            }


     public static string CreateSHA256Signature(string sharedKey)
        {
            var date = DateTime.UtcNow.ToString();
            var singningString = string.Format("licenseSpring\ndate: {0}", date);
            var hexHash = "";

            var encoding = new System.Text.ASCIIEncoding();
            byte[] keyByte = encoding.GetBytes(sharedKey);
            byte[] messageBytes = encoding.GetBytes(singningString);
            using (var hmacsha256 = new HMACSHA256(keyByte))
            {
                byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
                hexHash = Convert.ToBase64String(hashmessage);
            }
            return hexHash;
        }

Итак, как вы можете видеть, теперь есть два методы, которыми я поделился. Один - «GetLicenseKeyByHardwareIdAndUser», который вызывает метод api check_license веб-перехватчика, а второй вычисляет подписанный строковый заголовок SH256 base64, необходимый в первом методе при отправке заголовка авторизации. здесь уже есть ссылочный код, написанный в Nodejs, на сайте проверьте метод лицензии Пожалуйста, помогите мне здесь, так как я застрял на некоторое время. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...