尝试从带有后期请求的外部网站购买商品

时间:2019-05-27 20:13:54

标签: python ajax python-3.x python-requests

我正尝试使用其专用API和python请求模块从external website购买商品。问题在于,对于请求表单数据,它希望基本上由我手动构建的购物车商品与购物车所制造的商品完全相同,就我所知,它们完全相同。当我发布请求时,我从服务器收到一条错误消息,说它没有收到任何购物车物品。

我尝试匹配标头编码(原始请求使用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()内容返回“内容”:[{“错误”:“未发送购物车项目。”}]。 它应该以订单号和所有购买的物品作为响应。

让我知道我是否缺少任何重要细节。 谢谢!

1 个答案:

答案 0 :(得分:0)

尝试更换:

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

使用:

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

希望这会有所帮助