我正在尝试解码我在标签中找到的值" hash"属性,像" b4002e70b6cb73b1093d83e2b8e6c734",到一个字节数组,所以我可以正确调用noteStore.getResourceByHash方法。现在我不断收到EDAMNotFoundException错误,所以我猜我没有正确计算哈希值。
有没有人已经弄明白了?
这是代码。我尝试了很多不同的方法。这是目前的状况:
System.Security.Cryptography.MD5CryptoServiceProvider test123 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.ASCII.GetBytes("b4002e70b6cb73b1093d83e2b8e6c733");
data = test123.ComputeHash(data);
var note = noteStore.getResourceByHash(evernoteToken, noteGuid, data, true, false, false);
答案 0 :(得分:1)
看起来您的十六进制数是16个字节。它是GUID吗?如果是这样,你可以使用它:
var id = Guid.Parse("b4002e70b6cb73b1093d83e2b8e6c733").ToByteArray();
使用Encoding.ASCII.GetBytes
肯定是不对的,因为这样会得到byte
每char
,对应于该字符的ASCII值。您希望每两byte
char
(十六进制解码)。
答案 1 :(得分:0)
Evernote通过资源的GUID或二进制文件流的哈希引用资源。
如果您想获取资源的哈希值,则必须将已上传的文件的哈希值添加到Evernote。代码可能如下所示:
public string CalculateFileHashTotal(string fileLocation)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileLocation))
{
byte[] b = md5.ComputeHash(stream);
stream.Close();
return BitConverter.ToString(B).Replace("-", "").ToLower();
}
}
}
如果您希望获取已上传的资源或者您无法访问该文件,则通过GUID引用该资源可能是您的最佳选择。
您可以调用getNote
method来获取具有属性resources
的注释对象,该属性包含Resources
列表,每个属性具有GUID属性。此GUID可用于调用以下任何方法(每个方法都链接到Evernote API参考):