Я пытаюсь использовать Amazon Feeds API> SubmitFeed.
Я установил в запросе FeedContent поток памяти, созданный XmlWriter.
Переменная ContentMD5 запроса устанавливается с помощью:
request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
Я использую клиентскую библиотеку API фидов Amazon MWS (https://developer.amazonservices.com/doc/bde/feeds/v20090101/cSharp.html)
Коды не менял. Когда я вызываю MarketplaceWebService.SubmitFeed, я получаю такую ошибку:
"HTTP-заголовок Content-MD5, который вы передали для своего фида, не соответствует Content-MD5, который мы рассчитали для вашего фида"
Amazon говорит, что: их расчетные значения MD5 и мои значения MD5 различны. Почему так происходит?
Я добавил Amazon Feeds Api Client Library> 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.
Основываясь на вашем собственном ответе, убедитесь, что вы устанавливаете позицию потока обратно на ноль, прежде чем вычислять хэш. Это должно решить вашу проблему:
public static string CalculateContentMD5(Stream stream)
{
stream.Position = 0;
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
byte[] hash = provider.ComputeHash(content);
return Convert.ToBase64String(hash);
}