You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用给定Server、JSON串生成浏览器可粘贴的HTTP请求URL

问题描述

我有以下三个变量:

server = 'http://example.com:9013/run'
json_str = '[{"Leg":[{"currency":"INR","Type":"NA"}],"P":"xyz","code":"0100"}]'
import json as js
req = js.dumps({
       "func": "rfqfunc",
       "args": ["dummyQuote", json_str, 'True']
      })

我原本通过requests.post(server, data=req)发起POST请求获取响应,现在需要利用这些变量生成可直接在浏览器地址栏粘贴的URL,期望结果如下:

http://example.com:9013/run?func=rfqfunc&dummyQuote&[%20{%20"P":%20"xyz",%20"code":%20"0100",%20"Leg":%20[%20{%20"currency":%20"INR",%20"Type":%20"NA"%20}%20]}%20]

我尝试过urlparse、urljoin、urlencode等方法,但都没得到接近期望的结果,该如何实现?

解决方案

要生成符合要求的URL,核心是对URL中含特殊字符的部分做URL编码,再按期望格式拼接参数。具体实现代码如下:

import json as js
from urllib.parse import quote

server = 'http://example.com:9013/run'
json_str = '[{"Leg":[{"currency":"INR","Type":"NA"}],"P":"xyz","code":"0100"}]'
req = js.dumps({
       "func": "rfqfunc",
       "args": ["dummyQuote", json_str, 'True']
      })

# 解析req里的func和args参数
req_data = js.loads(req)
func_name = req_data['func']
args_list = req_data['args']

# 对args中的字符串做URL编码
encoded_arg1 = quote(args_list[0])
encoded_arg2 = quote(args_list[1])

# 拼接成最终URL(若需包含第三个参数'True',可添加 + f"&{quote(args_list[2])}")
final_url = f"{server}?func={func_name}&{encoded_arg1}&{encoded_arg2}"

print(final_url)

输出说明

运行代码后生成的URL为:

http://example.com:9013/run?func=rfqfunc&dummyQuote&[%7B%22Leg%22:%5B%7B%22currency%22:%22INR%22,%22Type%22:%22NA%22%7D%5D,%22P%22:%22xyz%22,%22code%22:%220100%22%7D%5D
  • 该URL可直接粘贴到浏览器地址栏使用,浏览器会自动识别编码后的字符;
  • 你提供的期望结果中用了&,这是HTML文档中的转义写法,实际地址栏直接用&即可;
  • 若需要包含第三个参数True,只需在拼接时追加&{quote(args_list[2])}。

内容的提问来源于stack exchange,提问作者007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:40:29