C#MWS“您为供稿传递的Content-MD5 HTTP标头与我们为您的供稿计算的Content-MD5不匹配”

时间:2018-10-27 09:13:21

标签: c# e-commerce amazon-mws

我正在尝试使用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值不同。为什么会这样?

2 个答案:

答案 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);
}