亚马逊网络服务:您为Feed传递的Content-MD5 HTTP标头在_POST_FBA_INBOUND_CARTON_CONTENTS _

时间:2017-04-26 13:20:18

标签: c# xml amazon-web-services amazon-s3 md5

我使用Microsoft C#中的XML文件提交 _POST_FBA_INBOUND_CARTON_CONTENTS _ 的Feed请求。

我已经从Class生成了XML文件。

然后我在Filestream中打开它,我在FeedContent中发送它,并计算我在ContentMD5中发送的MD5值。

我还将ContetType设置为application / xml

但我仍然收到错误您为Feed传递的Content-MD5 HTTP标头与我们为您的Feed计算的Content-MD5不匹配

我在这里发布我的代码。

请指导我错在哪里?

        public SubmitFeedResponse SubmitFeed()
        {
            SubmitFeedRequest request = new SubmitFeedRequest();
            SubmitFeedResponse submitFeedResponse = new SubmitFeedResponse();
            FileStream fs = File.Open(@"C:\file.xml", FileMode.Open);
            try
            {
            using (MD5 md5Hash = MD5.Create())
            {
                byte[] data = md5Hash.ComputeHash(fs);
                request.ContentMD5 = GetMd5HashFromStream(data);
            }
            request.FeedContent = fs;
            request.ContentType = new ContentType(MediaType.XMLStream);
            request.FeedType = "_POST_FBA_INBOUND_CARTON_CONTENTS_";
            request.MarketplaceIdList = new IdList();
            request.MarketplaceIdList.Id.Add(this.marketPlaceID);
            request.Merchant = this.sellerID;
            request.MWSAuthToken = this.mwsAuthToken;
            request.PurgeAndReplace = false;
            submitFeedResponse = client.SubmitFeed(request);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                fs.Close(); // or fs.Dispose()
            }
            return submitFeedResponse;
        }

        public string GetMd5HashFromStream(byte[] bytes)
        {
            using (var md5 = MD5.Create())
            {
               var hash = md5.ComputeHash(bytes);
               return Convert.ToBase64String(hash);
            }
        }

0 个答案:

没有答案