#c# #cdn #postman
#c# #cdn #postman
Вопрос:
У меня возникли трудности с отправкой запроса на очистку в LeaseWeb CDN API. Трудность заключается в том, что примеры LeaswebExamples находятся на PHP / Python и не содержат никакой информации о том, как это сделать в Post man. Пример curl является ближайшим:
curl -X POST -d '{"urls":["/path/to/file.jpg"]}' "https://api.leasewebcdn.com/content/purge/1234567890/123/1440593540/4a69f766bc48b1ed3d025339313196c388de8da5"
но я всегда получаю «forbidden» обратно от Postman.
Я создаю хэш sha1, используя SecretKey timeStamp authenticationURL; в c#:
var authenticationURL = "https://api.leasewebcdn/content/purge";
var sha1 = new SHA1Managed();
var timeStamp = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
var sha1Input = secretKey timeStamp authenticationURL;
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(sha1Input));
var sb = new StringBuilder(hash.Length);
foreach (byte b in hash)
{
// can be "x2" if you want lowercase
sb.Append(b.ToString("X2"));
}
Который я затем использую в Postman для отправки следующего:
где 1405123458 = номер клиента
8888 = идентификатор зоны
D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01 = код формы хэшированной подписи
contenttype = application/json body = {«URL-адреса»: [«*»]} <- удалит все файлы в корзине cdn
Каждый раз, когда мне возвращают запрет, и я не могу понять, что не так, поскольку все параметры верны, насколько я вижу.
Документы Leaseweb CDN API находятся по следующей ссылке, но все они написаны на PHP / Python, и у меня такое чувство, что мой метод хеширования может быть неправильным?
http://developer.leaseweb.com/cdn-docs/?php#purge-file (s) -из-зоны
Кто-нибудь раньше использовал Leaseweb CDN api через C #? Любая помощь или указания будут с благодарностью приняты.
Ответ №1:
Хорошо, мне удалось решить эту проблему. На самом деле весь код был хорош, за исключением хэш-подписи. Для LeaseWeb подпись хэша всегда должна быть в нижнем регистре. Этого можно достичь, изменив приведенный выше код на 1 (один !!) характер:
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(sha1Input));
var sb = new StringBuilder(hash.Length);
foreach (byte b in hash)
{
// this must be lowercase x2 (not X2) to produce a lowercase hash signature.
sb.Append(b.ToString("x2"));
}
Я был удивлен, что это не было указано в документации LeaseWeb CDN, поскольку это заставило меня потратить много времени на выяснение этого….