Python中发送post请求,构建请求体的时候请求负载如下,
关键的地方就是那个value的值,直接发送那个value可以,我想要根据变量修改里边的信息。用的方法是
addressvalue = f"{{\"address\":\"{address}\",\"longitude\":{longitude},\"latitude\":{latitude},\"province\":\"{province}\",\"city\":\"{city}\",\"region\":\"{region}\"}}"
接口没报错,但是后端处理后是海外、海外、详细地址.......,我猜应该是分割字符串的问题,我直接发送原本的写死的串就没问题。求解。
用json.dumps转整个结构体,然后发送直接报500,根据ChatGPT的思路只将这个键的值改为JSON字符串的格式,直接发送就成功.....
但是用字典构建这个值,再只将值转JSON,再发送就不行。
(1)尝试修改字符串再转为JSON(失败)
replacement_map = {
"金花街道高第坊39号荔湾区金花街锦绣社区": address,
"113.252272": longitude,
"23.127255": latitude,
"广东省": province,
"广州市": city,
"荔湾区": region
}
# 遍历替换
for key, value in replacement_map.items():
data_rigth["shopAttrRespList"][0]["child"][0]["child"][0]["value"] = \
data_rigth["shopAttrRespList"][0]["child"][0]["child"][0]["value"].replace(key, value)
# 转为JSON格式
data_rigth["shopAttrRespList"][0]["child"][0]["child"][0]["value"] = json.dumps(
json.loads(data_rigth["shopAttrRespList"][0]["child"][0]["child"][0]["value"]), ensure_ascii=False)
(1)尝试修改字典再转为JSON(失败)
addressvalue_dict = {'address': address, 'longitude':longitude, 'latitude': latitude, 'province': province,
'city': city, 'region': region}
data_rigth["shopAttrRespList"][0]["child"][0]["child"][0]["value"] = json.dumps(addressvalue_dict, ensure_ascii=False)
response = session.post(url, json=data_rigth, headers=headers, cookies=cookies)
我想要根据变量修改里边的信息,并使后端成功分割。
已解决,原因是那个value的值在浏览器中进行了两次JSON转码,要想在Python中模拟请求,需要同样对这个值进行两次JSON转码。