我正在尝试使用Amazon Feeds API> SubmitFeed操作。
我将请求的FeedContent设置为XmlWriter创建的内存流。
请求的ContentMD5变量设置为:
request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
我正在使用Amazon MWS Feeds Api客户端库(https://developer.amazonservices.com/doc/bde/feeds/v20090101/cSharp.html)
我没有更改密码。当我调用MarketplaceWebService.SubmitFeed时,出现以下错误:
“您为供稿传递的Content-MD5 HTTP标头与我们为您的供稿计算的Content-MD5不匹配”
亚马逊说:他们计算出的MD5和我的MD5值不同。为什么会这样?
答案 0 :(得分:0)
我添加了Amazon Feeds Api客户端库> MarketplaceWebServiceClient.cs文件的方法:
public static string CalculateContentMD5(byte[] content)
{
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
byte[] hash = provider.ComputeHash(content);
return Convert.ToBase64String(hash);
}
有一个
public static string CalculateContentMD5(Stream content)
功能,但是不能正常工作。
使用byte []代替Stream来计算MD5哈希值。
答案 1 :(得分:0)
根据您自己的答案,请确保在计算哈希值之前将流位置重新设置为零。这应该可以解决您的问题:
public static string CalculateContentMD5(Stream stream)
{
stream.Position = 0;
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
byte[] hash = provider.ComputeHash(content);
return Convert.ToBase64String(hash);
}