当前位置: 首页 > news >正文

get和post的请求在request里的应用与区别

今天遇到了一些问题,算是搞懂了get和post请求在request里的区别,用错了就请求不到,这里把总结的ai回答发一下,作为笔记

一句话记忆:

  • GET → 把参数放在 URL 查询串 → 用 params=
  • POST → 把参数放在 请求体 → 用 data=(表单)或 json=(JSON)

对照表

场景requests 写法最终出现在
GET 查询参数requests.get(url, params={'a':1})?a=1
POST 表单requests.post(url, data={'a':1})body,Content-Type: application/x-www-form-urlencoded
POST JSONrequests.post(url, json={'a':1})body,Content-Type: application/json

常见误区

  • GET 用 data= → 会被忽略
  • POST 用 params= → 只会追加到 URL,不会进 body

所以 “GET → params,POST → data/json” 是 99 % 场景下的正确配对。


你看到的

https://haowallpaper.com/link/common/file/getCompleteUrl/

后面 没有自动带上 data 参数,是因为你用的是 POST 并把 pp 放进了 data=
requests 只在 GET手动拼 URL 时才会把 params 拼到 URL 上。


✅ 如何同时看到「完整 URL + data 内容」

1. 改成 GET,让 requests 自动拼接
import urllib.parse as upbase = f"https://haowallpaper.com/link/common/file/getCompleteUrl/{wtid}"
full_url = f"{base}?{up.urlencode(pp)}"
print("完整 URL =>", full_url)resp = session.get(full_url, headers=headers, timeout=10)
print("响应 =>", resp.text)

输出示例

完整 URL => https://haowallpaper.com/link/common/file/getCompleteUrl/17151990488157568?data=0sSpEAt8pd%2BMHt1R%2F6e6X...
2. 如果仍坚持 POST
# POST 时 URL 不会带 data,但你可以手动打印
print("POST URL =>", resp.url)          # 只打印基础路径
print("POST 体  =>", pp)                # 手动看 data

⚠️ 网络 / 链接异常提示

当前服务器对这条 fileId 返回 500 Internal Server Error
并非参数缺失,而是 服务器拒绝该轨迹密文文件已失效

  • 确认轨迹加密格式(浏览器抓包对比长度)。
  • 换一个 wtid 重试等待数分钟

你的疑问可以一句话说清楚:

POST 本身不会把 data 拼到 URL 上;你看到“URL 是拼接过的”是因为后端在 30X 重定向时把参数又回写到 Location 里,或者你实际发的是 GET。


✅ 如何 100 % 确认真实请求 URL

requests 自带的 PreparedRequest

from requests import Request, Sessions = Session()
req = Request('POST',f'https://haowallpaper.com/link/common/file/getCompleteUrl/{wtid}',data=pp,          # 这里是 POST 体headers=headers).prepare()print('真实 URL =>', req.url)   # 不含 data
print('POST 体 =>', req.body)   # 这里才是 data
resp = s.send(req)              # 发送
print('响应 URL =>', resp.url)  # 如果有 30X 重定向,这里才会带参数

🔍 常见误区

场景你看到的 URL原因
POST + data=原始 URL 不变参数放在 请求体
POST + params=URL 带 ?data=...参数被拼到 查询串
后端 30X 重定向Location 带 ?data=...服务器把参数 回写

✅ 一句话结论

POST 不会把 data 拼到 URL;
若 URL 带参数,要么你用了 params=,要么被重定向,要么实际发的是 GET。

content-Length

Content-Length 的含义一句话:它只表示「请求/响应体」占用的字节数,与 URL 里的查询参数、Cookie 等头部字段 毫无关系

场景Content-Length 值说明
GET / 空体0没有请求体,URL 参数再多也不计入
POST + data=... 放在 URL 查询串0参数在 URL,不在请求体
POST + 表单/JSON 放在 请求体实际字节数例如 {"a":1} 长度 7,就被计为 7

因此:

  • 你抓到的包 POST ...?data=xxx 请求体确实为空,所以 Content-Length: 0正确的
  • 只要 body 里没有任何数据,无论 URL 多长,都写 0;这才是 HTTP 协议的规范行为。
http://www.dtcms.com/a/308687.html

相关文章:

  • 机器视觉的家电薄膜开关丝印应用
  • 前端 vue 第三方工具包详解-小白版
  • Data Processer
  • QQ输入法设置快捷键,更快造词或自定义短语
  • 智慧零售商品识别准确率↑32%:陌讯多模态融合算法实战解析
  • 2025年IntelliJ IDEA最新下载、安装教程,附详细图文
  • 人工智能如何助力工业领域实现可持续发展?
  • 循环神经网络RNN原理精讲,详细举例!
  • 人工智能与新闻传播:信息传播的变革
  • vue-seamless-scroll 与 echarts 三联水球图循环滚动的渲染难题-出现短暂空白
  • el-button长按触发事件(含未响应的解决方案)
  • 【AI大模型】披着羊皮的狼--自动化生成越狱提示的系统(ReNeLLM)
  • QtConcurrent::run函数
  • React 项目环境如何安装使用?
  • es的histogram直方图聚合和terms分组聚合
  • pig Cloud中分布式锁的使用(setIfAbsent)
  • 扫描发票自动录入财务系统怎么做?
  • 定点数 与 浮点数
  • 软件项目中如何编写项目计划书?指南
  • ros2 tf2详解
  • 基于 C 语言视角:流程图中分支与循环结构的深度解析
  • 敏捷开发轻量级看板工具:提升效率的秘密武器
  • 【02】大恒相机SDK C#开发 —— 初始化相机,采集第一帧图像
  • 基于单片机智能油烟机设计/厨房排烟系统设计
  • mac fusion win11虚拟机 不能正确识别bitlocker USB
  • wordpress配置文章详情页自动生成目录点击定位
  • 计算机存储正数,负数
  • Flask Bootstrap 后台权限管理方案
  • 【工具变量】企业数字化转型:数字化无形资产占比测算(2007-2024年)
  • 【算法基础课-算法模板2】数据结构