首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误“您为您的提要传递的Content-MD5 HTTP标头与我们为您的提要计算的Content-MD5不匹配”

错误“您为您的提要传递的Content-MD5 HTTP标头与我们为您的提要计算的Content-MD5不匹配”
EN

Stack Overflow用户
提问于 2020-02-28 00:48:20
回答 1查看 159关注 0票数 2

我正在尝试为在Django (Python)环境中使用Amazon API的产品设置最高价格。我已经解决了计算md5函数的问题,该函数的值与Amazon MWS Scratchpad计算的值完全相同。

解决了这个问题后,我现在收到一条错误消息“您为您的提要传递的Content-MD5 HTTP头与我们为您的提要计算的Content-MD5不匹配”。

我的代码如下:

代码语言:javascript
运行
复制
feedTxt = '<?xml version="1.0" encoding="utf-8"?><AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>MERCH_ID</MerchantIdentifier></Header><MessageType>Price</MessageType><Message><MessageID>1</MessageID><Price><SKU>J1-1UKW-8Z03</SKU><MaximumSellerAllowedPrice currency="EUR">999</MaximumSellerAllowedPrice></Price></Message></AmazonEnvelope>'

feed = open('myXml.xml', mode='w+', buffering=-1, encoding='utf-8')
feed.write(feedTxt)
feed.close()

encodedFeed = feedTxt.strip().encode('utf-8')

md5 = hashlib.md5(encodedFeed).digest()
encodedMd5 = base64.b64encode(md5)
parsedMd5 = urllib.parse.quote(encodedMd5, safe='')

request_string = construct_strings(seller, '', 'SubmitFeed', '2009-01-01', args_dict) # this function defines the string to be signed and is working 100%, since I use it for all the other requests I do

feed = open('myXml.xml', mode='r', buffering=-1, encoding='utf-8')
myFile = {'file': feed}
response = requests.post(request_string, headers = {'Content-MD5': encodedMd5, 'Content-Type': 'text/xml'}, files = myFile)            
feed.close()

这是我在stackOverflow这里问的第一个问题。感谢你能给我的任何提示。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-03-06 23:58:13

只想告诉你我已经解决了我的问题。我发现提要不是作为文件发布的,而是在主体('data‘字段)中发布的。因此(在许多其他更正中),最终的代码是:

代码语言:javascript
运行
复制
feed = '<?xml version="1.0" encoding="utf-8"?><AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Header>'
feed += '<DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A3RVNLI4ZWO9K4</MerchantIdentifier></Header><MessageType>Price</MessageType><Message><MessageID>1</MessageID>'
feed += '<Price><SKU>sa400240g</SKU><MaximumSellerAllowedPrice currency="EUR">975</MaximumSellerAllowedPrice></Price></Message></AmazonEnvelope>'

encodedFeed = feed.encode('utf-8')
md5 = hashlib.md5(encodedFeed)
encodedMd5 = base64.b64encode(md5.digest())
parsedMd5 = urllib.parse.quote(encodedMd5, safe='')                       

request_string = construct_strings(seller, '', 'SubmitFeed', '2009-01-01', args_dict)
myHeader = {'Content-MD5': encodedMd5.decode('utf-8'), 'Content-Type': 'text/xml'}
response = requests.post(request_string, headers = myHeader, data = feed)

不管怎样,谢谢你!希望这个解决方案能帮助有同样问题的人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60438069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档