Python请求不会返回与web浏览器相同的结果

Python请求不会返回与web浏览器相同的结果,python,api,python-requests,Python,Api,Python Requests,好的,这是我的问题。当我为客户端提供的API执行浏览器调用时: https:///status.asmx/Fin?gt=14046.40&key=&cash=notes&date=2020-06-25+15%3A47%3A01和收据编号=748和类型=收款和合计=0.00和位置=003-480 结果是:{0:Success} 但是,当我对python请求库执行相同的调用时,我希望它执行相同的调用: event_data = {'key': <exactly_the_same_aut

好的,这是我的问题。当我为客户端提供的API执行浏览器调用时:

https:///status.asmx/Fin?gt=14046.40&key=&cash=notes&date=2020-06-25+15%3A47%3A01和收据编号=748和类型=收款和合计=0.00和位置=003-480

结果是:{0:Success}

但是,当我对python请求库执行相同的调用时,我希望它执行相同的调用:

    event_data = {'key': <exactly_the_same_auth_key>,
                 'pos': DEVICE_ID,
                 'type': 'monthlybalance',
                 'total': close_data['overall']['price'],
                 'cash': close_data['overall']['price_c'],
                 'cards': close_data['overall']['price_cl'],
                 'coinbox': sorted_cash_data['coinbox'],
                 'notebox': sorted_cash_data['notebox'],
                 'coindispenser': sorted_cash_data['coindispenser'],
                 'notedispenser': sorted_cash_data['notedispenser'],
                 'startdate': close_data['header']['from'].strftime('%Y-%m-%d %H:%M:%S'),
                 'enddate': close_data['header']['to'].strftime('%Y-%m-%d %H:%M:%S'),
                 'receipt_number': 'none',
                 'gt': self.get_grand_total()}

    r = requests.post(url, data=json.dumps(event_data), timeout=5)
结果是:{1:密钥不能为空}

这是他们得出的结果,但与WEB调用的结果不同,很明显,API没有正确地获取密钥

然而,今天我花了一整天的时间,想找到一种打印原始URL调用的方法,请求就可以了。不合适。 我还尝试了各种将密钥传递给请求的方法:

将其放入标头-未工作标头={'key':}, 将其放入身份验证-未工作身份验证=,
我几乎可以肯定,请求弥补了ULR的错误,因为它在浏览器中工作,但我不知道如何修复它。或者如何检查,问题出在哪里。

请求中的参数和请求正文之间存在差异。这里要做的是在请求体中发送值,但顶部的URL将值作为URL参数传入。试试这个:

事件_数据={'key':, “位置”:设备ID, 'type':'monthlybalance', “总计”:关闭_数据[“总体”][“价格”], “现金”:关闭数据[“总体”][“价格”], “卡片”:关闭数据[“总体”][“价格”], “coinbox”:已排序的现金数据[“coinbox”], “记事本”:已排序的现金数据[“记事本”], “硬币分配器”:已排序的现金数据[“硬币分配器”], “票据分配器”:已排序的现金数据[“票据分配器”], “开始日期”:关闭_数据['header']['from']。strftime“%Y-%m-%d%H:%m:%S”, “enddate”:关闭_数据['header']['to']。strftime“%Y-%m-%d%H:%m:%S”, “收据编号”:“无”, 'gt':自我。获取_grand _total} r=requests.postrl,params=event_数据,超时=5
这里的问题是r=requests.postrl,data=json.dumpsevent_data,timeout=5,post不希望它的数据是json格式的,而是url编码格式的,所以要么更改请求和编码方法例如获取和/或适当地更改数据编码我已经尝试过了,但它返回了相同的结果:{1:KEY不能为空}如果没有细节,很难说。如果没有URL或可能的API密钥,人们不可能测试出问题所在,因为这个问题在当前情况下非常特殊。出于安全原因,我无法提供密钥和URL。在这种情况下,您可能需要自己解决。祝你好运