帆软用的 post 方式编码不是用的 dict,而是二次 url 编码,需要二次解析
import time
import urllib.parse
import json
# 原始字符串
encoded_string = data = "__parameters__=%7B%22MANUFACTURER%22%3A%22%22%2C%22CATEGORY%22%3A%22%22%2C%22HHPN_LABEL%22%3A%22HHPN%3A%22%2C%22SITE%22%3A%22Tianjin%22%2C%22SITE_LABEL%22%3A%22Site%3A%22%2C%22PLANT_LABEL%22%3A%22Plant%3A%22%2C%22MC_CONTACT_WINDOW%22%3A%22%22%7D"
# 第一步:从字符串中提取 JSON 部分 split 中的 1 代表至多分割一次
json_string = encoded_string.split('=', 1)[1]
# 第二步:进行两次 URL 解码
decoded_once = urllib.parse.unquote(json_string)
decoded_twice = urllib.parse.unquote(decoded_once)
# 第三步:JSON 解析
parsed_dict = json.loads(decoded_twice)
data = json.dumps(parsed_dict, indent=2)
# 打印结果
print(data)
data = {
"MANUFACTURER": "",
"CATEGORY": "",
"HHPN_LABEL": "HHPN:",
"SITE": "Tianjin",
"SITE_LABEL": "Site:",
"PLANT_LABEL": "Plant:",
"MC_CONTACT_WINDOW": ""
}
json_str = json.dumps(data)
json_str = json_str.replace(" ", "")
# 对 JSON 字符串进行 URL 编码
encoded_str = urllib.parse.quote(json_str)
data = f"__parameters__={encoded_str}"
print(data)