1

真的希望有人可以在这里帮助我。我在 vb.net 中做了一个小程序,它将与我最近部署的 Cloudstack 交互。

目前它拒绝我的 API 调用,因为 401 未经授权,所以我显然没有正确生成我的签名。

我从解释如何生成签名以签署请求的文档中提取了一些内容......您可以在此处查看:http ://www.x85.co.uk/generatesig.txt

我使用了一个我在网上找到的示例函数来获取 SHA1 哈希,但是在这段代码中没有任何地方有密钥,所以这是一个问题......

Function getSHA1Hash(ByVal strToHash As String) As String
Dim sha1Obj As New Security.Cryptography.SHA1CryptoServiceProvider
Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
bytesToHash = sha1Obj.ComputeHash(bytesToHash)
Dim strResult As String = ""
For Each b As Byte In bytesToHash
    strResult += b.ToString("x2")
Next
Return strResult
End Function

我也没有包含 URL 编码位,因为我不确定如何执行此操作。

任何帮助都会得到帮助。

多谢你们!

4

1 回答 1

0

尝试CloudStack .NET SDK NuGet 包

为您计算签名并使用 VB.NET

这是 C# 中的粗略示例用法。希望你能把它翻译成VB:

var cloudStackClient = new Client(csApiUrl, csApiKey, csApiSecret);

CloudStack.SDK.APIRequest req = new APIRequest("deleteTemplate");
req.Parameters.Add("id", id);
cloudStackClient.SendRequest(req);
于 2014-01-03T10:06:22.700 回答