尝试通过POST请求从外部网站购买物品

2024-04-19 09:06:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图使用一个external website的私有API和python请求模块从其购买一个项目。问题是,对于请求表单数据,它希望我手动构造的购物车项目与购物车生成的项目完全相同,据我所知,它们完全相同。当我发布请求时,我从服务器收到一个错误,说它没有得到任何购物车项目

我尝试了匹配标题编码(原始请求使用application/x-www-form-urlencoded),使用请求JSON kwarg而不是数据,还尝试了手动将项目添加到购物车,获取它们,然后发送它们。我想可能是我需要先对它们编码,但我不知道是什么

这里有一些代码

login_data = {'email': 'email', 'password': 'password123'}
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/74.0.3729.157 Safari/537.36',
           'Content-type': 'application/x-www-form-urlencoded'}

s = requests.Session()
login_response = s.post(url, data=login_data, headers=headers)  # login
data_charge = {'cartItems':[cartItems], # This is a list of dicts
               'key': 'licensing', 
               'nonce': credit_card_token,  # I have to get the card token which works fine
               'cardholder': 'John Smith'}
purchase_response = s.post(url_charge, data=data_charge, headers=headers)

purchase_response.json()内容返回“content”:[{“error”:“未发送购物车项目”。}]。 它应该回复订单号和所有购买的物品

如果我遗漏了任何重要的细节,请告诉我。 谢谢大家!


Tags: 数据项目form编码dataapplicationemailresponse
1条回答
网友
1楼 · 发布于 2024-04-19 09:06:48

尝试替换:

purchase_response = s.post(url_charge, data=data_charge, headers=headers)

与:

purchase_response = s.post(url_charge, json=data_charge, headers=headers)

希望这有帮助

相关问题 更多 >