我使用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);
}
}