C# Amazon web服务:您为提要传递的Content-MD5 HTTP头与\u POST\u FBA\u INBOUND\u CARTON\u内容不匹配_
我正在使用Microsoft C#中的XML文件提交\u POST\u FBA\u INBOUND\u CARTON\u内容的提要请求。 我已经从类中生成了XML文件 然后,在我在Filestream中打开它之后,我将在FeedContent中发送它,并计算我在ContentMD5中发送的MD5值 我还将ContetType设置为application/xml 但是我仍然得到错误,因为您为提要传递的Content-MD5 HTTP头与我们为您的提要计算的Content-MD5不匹配 我在这里张贴我的代码 请告诉我哪里错了C# Amazon web服务:您为提要传递的Content-MD5 HTTP头与\u POST\u FBA\u INBOUND\u CARTON\u内容不匹配_,c#,xml,amazon-web-services,amazon-s3,md5,C#,Xml,Amazon Web Services,Amazon S3,Md5,我正在使用Microsoft C#中的XML文件提交\u POST\u FBA\u INBOUND\u CARTON\u内容的提要请求。 我已经从类中生成了XML文件 然后,在我在Filestream中打开它之后,我将在FeedContent中发送它,并计算我在ContentMD5中发送的MD5值 我还将ContetType设置为application/xml 但是我仍然得到错误,因为您为提要传递的Content-MD5 HTTP头与我们为您的提要计算的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);
}
}
正在使用的服务是否要求MD5采用base64编码,如规范d?@MadMyche是的,它需要MD5我知道,但您是以本机十六进制发送还是以base64编码?@MadMyche我是以base64编码的。对不起,我忘了在我的问题中提到这一点。刚刚编辑过。