我正在尝试自动化一个web表单。当我在Chrome中实际运行查询时,有效负载在inspect窗口上如下所示。。。在
data: [{"property":"TimeQuick","value":"Active"},{"property":"TimeQuickDurationOptions","value":3},{"property":"TimeQuickStartDate","value":"05/15/2019 00:00:00"},{"property":"TimeQuickEndDate","value":"05/15/2019 23:59:59"},{"property":"ProviderCode","value":["FPL"]},{"property":"SellerCode","value":[""]},{"property":"Ref","value":""},{"property":"POR","value":["SOCO"]},{"property":"POD","value":["FPC"]},{"property":"Path","value":""},{"property":"ServiceIncrement","value":["DAILY"]},{"property":"TSClass","value":[""]},{"property":"TSType","value":[""]},{"property":"TSWindow","value":""},{"property":"TSPeriod","value":""},{"property":"TSSubClass","value":""},{"property":"Time","value":"Active"},{"property":"TimeDurationOptions","value":3},{"property":"TimeStartDate","value":"05/15/2019 00:00:00"},{"property":"TimeEndDate","value":"05/15/2019 23:59:59"},{"property":"ShowActiveData","value":true},{"property":"DaylightSavings","value":false}]
sort: [{"property":"TOL","direction":"DESC","root":"data"}]
pagingEnabled: 1
page: 1
limit: 50
我试着用这样的python变量来表示它
^{pr2}$当我运行s.post(myurl, data=datareq, cert=mycerts)
时,我得到了以下错误:
我假设问题出在我构造datareq
变量的方式上。什么是合适的方式来做这个职位?在
编辑/更新:
我试过亚历克斯和伊万的建议,但都没用。他们每个人都给我一个来自服务器的神秘消息success=false
。如果我用json=datareq
而不是data=datareq
来尝试它们,那么我会从服务器得到一个0结果的响应,尽管它应该有很多结果,所以看起来这是越来越接近,但仍然不是所有的方式。在
服务器希望POST正文的类型是}?如果是json,那么使用语法})。如果使用}采用json。如果它确实需要json,这是有意义的,因为数据嵌套了几层,那么我将扩展@Işık Kaplan的答案:
application/json
还是{request.post(url, json=payload_dict, ....)
(注意json
kwarg而不是{data
,那么它将采用内容类型application/x-www-form-urlencoded
,而{尽管您的
datareq
数据结构通常对python
有效,但它不能用作requests.post
方法中的data
参数。在它不是显式编写的,但是如果您为}的
requests
库读取documentation,您会注意到data
参数应该是普通pythondict
,或者是{list
,其中顶层的每个元组正好包含2个成员-一个键和一个值。在这正是您的
traceback
输出的结果:特别是,您在
^{pr2}$datareq
中的第一个tuple
无效:,因为}的东西应该是“value”。在
data
应该是“key”,而其他{要使其正确,
datareq
应该如下所示:我会用的是:
以及使用给定属性:
^{pr2}$相关问题 更多 >
编程相关推荐