假设 data 如下 data={
a = '11',
b = '22',
c = 某个变量,
d = 另一个变量,
e = '33'
} 然后我 requests.post 理论来说 他 data 的顺序应该是 a=11&b=22.....依次按顺序,但是我测试抓包发现,他顺序是乱的,特别是变量,他可能会封装成 a=11&c=某个变量&d=另一个变量值&b=22..... 我想让他就按照从上往下的顺序进行封装起来,百度了下也没人问这类的问题,请问有解吗?
假设 data 如下 data={
a = '11',
b = '22',
c = 某个变量,
d = 另一个变量,
e = '33'
} 然后我 requests.post 理论来说 他 data 的顺序应该是 a=11&b=22.....依次按顺序,但是我测试抓包发现,他顺序是乱的,特别是变量,他可能会封装成 a=11&c=某个变量&d=另一个变量值&b=22..... 我想让他就按照从上往下的顺序进行封装起来,百度了下也没人问这类的问题,请问有解吗?
|
ThirdFlameAug 20, 2021
1
一般不关心这个顺序, 因为 http 服务器那边也不是按照顺序解析的。
你要是非得控制这个顺序,就不要用 requests 了。 可以自行实现。 |
|
Trim21Aug 20, 2021
2
升级到 python3.6 以上
|
|
surbomflaAug 20, 2021 via Android
3
接收方能正确接收到就行了
|
|
BuildingAug 20, 2021 via iPhone
4
用数组,或者排序。
|
|
5
@Trim21 已经 3.8 了 没用
|
|
6
@Building 请教一下想稍微具体点 不是很明白 谢谢!
|
|
7
@ThirdFlame
@surbomfla 目前碰到个网页,比如我要上传 2 段文字,他的逻辑是先来一个 base64 文本 1 然后来一个“TXT[0]”再来个 base64 文本 2,然后再来个"TXT[1]",如果顺序不对的话他就没法识别两段文字了(因为顺序变成了 base1,base2,txt0,txt1 ) |
|
ysc3839Aug 20, 2021 via Android
8
尝试传 OrderedDict 进去?
|
|
Trim21Aug 20, 2021
9
你传的这个 data 是 built-in 的 dict 类型吗?
requests 内部调用的是 data.items(),我试了一下是有序的啊 r = requests.post("https://httpbin.org/post", data=data) print(type(r.request.body), r.request.body) |
|
ysc3839Aug 20, 2021 via Android
10
或者尝试传 [('key1', 'val1'), ('key2', 'val2')] 这样的数据进去。
|
|
11
|
|
12
@zhuzhuaini 抱歉各位,我似乎知道问题出在哪了 他的打他(data)实际上是这样的
|
|
Trim21Aug 20, 2021
13
@zhuzhuaini #11 按照 10 楼说的那样传 list 进去
|
|
skinnyAug 20, 2021
14
没办法复现……
|
|
15
|
|
securityCodingAug 21, 2021 via Android
16
不用按顺序解啊,本身就有 k v 映射
|
|
RRRogerAug 21, 2021
17
requests 的 data 和 json 两个参数的区别 楼主是不是有点模糊
data: A dictionary, list of tuples, bytes or a file object to send to the specified url json: A JSON object to send to the specified url |