Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “错误”;您为提要传递的Content-MD5 HTTP标头与我们为您的提要计算的Content-MD5不匹配;_Python_Django_Amazon Web Services_Http Headers_Content Type - Fatal编程技术网

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

Python “错误”;您为提要传递的Content-MD5 HTTP标头与我们为您的提要计算的Content-MD5不匹配;,python,django,amazon-web-services,http-headers,content-type,Python,Django,Amazon Web Services,Http Headers,Content Type,我试图为在Django(Python)环境中使用AmazonAPI的产品设定最高价格。 我已经解决了计算md5函数的问题,该函数的值与Amazon MWS Scratchpad计算的值完全相同 解决此问题后,我现在收到一条“为提要传递的Content-MD5 HTTP头与我们为提要计算的Content-MD5不匹配”错误消息 我的代码如下: feedTxt = '<?xml version="1.0" encoding="utf-8"?><AmazonEnvelope xsi:

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

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

我的代码如下:

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()
feedTxt='1.01MERCH_IDPrice1J1-1UKW-8Z03999' 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_string(seller,,'SubmitFeed,,'2009-01-01',args_dict)#此函数定义要签名的字符串并100%工作,因为我将其用于所有其他请求 feed=open('myXml.xml',mode='r',buffering=-1,encoding='utf-8') myFile={'file':提要} response=requests.post(请求字符串,标题={'Content-MD5':encodedMd5,'Content Type':'text/xml'},files=myFile) feed.close() 这是我在stackOverflow的第一个问题。 我很感激你能给我的任何提示


谢谢

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

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)
feed=''
feed+=“1.01A3RVNLI4ZWO9K4Price1”
馈送+=“sa400240g975”
encodedFeed=feed.encode('utf-8')
md5=hashlib.md5(encodedFeed)
encodedMd5=base64.b64encode(md5.digest())
parsedMd5=urllib.parse.quote(encodedMd5,safe='')
请求字符串=构造字符串(卖方“,”提交种子“,”2009-01-01”,参数dict)
myHeader={'Content-MD5':encodedMd5.decode('utf-8'),'Content-Type':'text/xml'}
response=requests.post(请求字符串,headers=myHeader,data=feed)
无论如何,谢谢你! 希望这个解决方案能帮助有同样问题的人