在POSTMAN中使用LeaseWeb CDN API清除LeaseWeb CDN

时间:2016-10-17 11:07:13

标签: c# cdn postman

我在向LeaseWeb CDN API发送清除请求时遇到困难。困难在于LeaswebExamples是PHP / Python,并且没有关于如何在Post man中执行此操作的任何信息。 卷曲示例最接近:

curl -X POST -d '{"urls":["/path/to/file.jpg"]}' "https://api.leasewebcdn.com/content/purge/1234567890/123/1440593540/4a69f766bc48b1ed3d025339313196c388de8da5"

但我总是从邮递员那里得到“禁止”。

我正在使用secretKey + timeStamp + authenticationURL创建sha1哈希;在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"));
        }

然后我在邮递员中使用以下内容发送:

https://api.leasewebcdn.com/content/purge/1405123458/8888/1476699042/D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01

,其中 1405123458 =客户编号

8888 =区域ID

D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01 =散列签名表单代码

contenttype = application / json body = {“urls”:[“*”]}< - 将清除cdn bucket中的所有文件

每次我被禁止回来,我无法解决出错的原因,因为所有参数都是正确的,据我所见。

Leaseweb CDN API文档在以下链接中,但它们都是PHP / Python,我觉得我的哈希方法可能不正确?

http://developer.leaseweb.com/cdn-docs/?php#purge-file(s)-from-a-zone

之前有没有人通过C#使用Leaseweb CDN api?非常感谢任何帮助或指示。

1 个答案:

答案 0 :(得分:0)

好的,我设法解决了这个问题。除了哈希签名之外,代码实际上都很好。对于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文档中没有指定,因为它导致我浪费了大量时间来搞清楚....