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

为什么Python3发送HTTP请求时手动URL编码不生效?

问题核心原因

你对URL参数做了两次编码,导致服务端接收到的参数值不符合预期:

  • requests库的get方法接收params参数时,会自动对字典内的所有键、值执行URL编码,不需要开发者手动提前处理
  • 你提前用urllib.parse.quote_plus()对text做了一次编码后,requests会对已经编码的结果再做第二次编码,等于转义了两次

测试样例验证

你给出的测试文本为#Thisisgreat#, yes!,两次编码的流程如下:

  1. 手动执行一次quote_plus编码后得到:%23Thisisgreat%23%2C+yes%21
  2. requests自动对上述结果做第二次编码,最终发送到服务端的参数为:%2523Thisisgreat%2523%252C%2Byes%2521
  3. 服务端仅会做一次URL解码,拿到的内容是%23Thisisgreat%23%2C+yes%21,和原始文本完全不符,自然返回错误结果

修复方法

直接删除text = urllib.parse.quote_plus(text)这行代码即可,requests会自动完成所有参数的URL编码操作,无需手动处理。

额外提示:你当前的代码没有导入urllib.parse模块,如果保留手动编码逻辑运行时会直接抛出NameError,不过你的场景完全不需要手动编码,直接删除该行即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:57:04