返回顶部
首页 > 资讯 > 后端开发 > Python >python requests.post请求404问题及解决方法
  • 800
分享到

python requests.post请求404问题及解决方法

2024-04-02 19:04:59 800人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录问题场景问题分析postman测试问题解决结论问题场景 有时候,在编写一段Http接口请求程序时,发现代码中的header头和请求体中都是原网页中一样,但是,在实际请求时,接口却

问题场景

有时候,在编写一段Http接口请求程序时,发现代码中的header头和请求体中都是原网页中一样,但是,在实际请求时,接口却返回404,代码如下

header = {
    # ':authority': 'm.ctrip.com',
    # ':method': 'POST',
    # ':path': '/restapi/soa2/20405/getPCSightList',
    # ':scheme': 'https',
    'accept': '*/*',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'zh-CN,zh;q=0.9',
    'authorization': 'xx',
    'cache-control': "no-cache",
    'content-length': '373',
    'content-type': 'application/JSON;charset:utf-8;',
    'cookies': 'xx',
    'origin': 'https://www.tripadvisor.cn',
    'pragma': 'no-cache',
    'referer': 'https://www.tripadvisor.cn/Attractions-g60763-New_York_City_New_York-Vacations.html',
    'sec-ch-ua': "'.Not/A)Brand';v='99', 'Google Chrome';v='103', 'Chromium';v='103'",
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platfORM': 'MacOS',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
    'x-ta-uid': 'cd58b674-7dba-484a-a908-3239120cd728'
}
url = 'https://m.ctrip.com/restapi/soa2/20405/getPCSightList'
data = {"geoId":60763,"pageIndex":1,"pageSize":30,"travelRanking":"false","needSelectedFilters":"true","filters":[{"type":"subcategory","param":""},{"type":"subtype","param":""},{"type":"neighborhood","param":""},{"type":"travelerRating","param":""},{"type":"awards","param":""},{"type":"waypointairport","param":""},{"type":"waypointstation","param":""},{"type":"other","param":""}]}
response = requests.post(url=url, data=data, headers=header)
print(response.status_code)

运行结果为

在这里插入图片描述

问题分析

既然404,那就排查问题,data和header都是直接从复制浏览器中复制过来的,不会有问题,那有问题的必然是request.post中的方法问题
查看request.post源码

在这里插入图片描述

从源码中可以看到,request.post可以接受两个参数,一个是data,还有一个是json,
data是以字典的形式发送body,json则是以json数据格式发送body
通过这两个注释可以很明显的发现,requests.post在发送请求时,会根据当前传递的参数来选择不同的方式,可以理解为一种是表单形式,还有一种是json格式

postman测试

通过postman来测试两种不同请求下的情况
form表单

在这里插入图片描述

Json数据

在这里插入图片描述

通过postman测试可以发现,当前服务后端接口仅接受json格式的数据,即content-type为application.json

问题解决

将原先代码中data替换成json

response = requests.post(url=url, json=data, headers=JsonHeader)

在这里插入图片描述

这个时候肯定有人会问,那我使用data传递数据时,将header头中的content-type指定为application/json不就行了,但其实是不行的,就算自己指定了,最后request.body的值也是类似于key1=value1&key2=value2这种形式

结论

当request.post使用json来传递参数时,即使不指定content-type类型,也会默认指定application/json

在这里插入图片描述

使用data传递参数时,将会以表单的形式进行提交,并且后续将通过urlencode转换成字符串,及key1=value1&key2=value2的形式

在这里插入图片描述

使用data时,即使指定了content-type也不会生效,后续将会被默认替换掉

在这里插入图片描述

因此,需要根据自己实际情况来分析当前接口接收数据时使用的是什么格式,但目前一般的网站都开始采用application/jsond的数据格式

到此这篇关于python requests.post请求404问题的文章就介绍到这了,更多相关Python requests.post请求内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python requests.post请求404问题及解决方法

本文链接: https://lsjlt.com/news/120351.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python requests.post请求404问题及解决方法
    目录问题场景问题分析postman测试问题解决结论问题场景 有时候,在编写一段http接口请求程序时,发现代码中的header头和请求体中都是原网页中一样,但是,在实际请求时,接口却...
    99+
    2024-04-02
  • Django配合python进行requests请求的问题及解决方法
    目录Django配合python进行requests请求前言Django代码部分rest_frameworkapi/views.pyINSTALLED_APPS本地接口Django配...
    99+
    2024-04-02
  • AJAX请求以及解决跨域问题详解
    目录AJAX 介绍一.原生AJAX请求(GET)二.jQuery AJAX请求(GET 和POST)三.跨域问题的解决四.其他解决跨域问题方法总结AJAX 介绍 AJAX其实就是异步...
    99+
    2024-04-02
  • ajax请求前端跨域问题原因及解决方案
    目录一、跨域是怎么形成的二、导致跨域的根本原因三、解决方法1 、JSONP2、 CORS3 、代理转发一、跨域是怎么形成的 当我们请求一个url的 协议、域名、端口三者之间任意一个与...
    99+
    2024-04-02
  • Python HTTP请求的常见错误及解决方法
    错误 404:未找到资源 错误 404 是最常见的HTTP错误之一,表示服务器无法找到请求的资源。这可能是由于以下原因造成的: 请求的URL不正确。 请求的资源已被删除或移动。 服务器配置错误。 要解决此错误,您需要检查请求的U...
    99+
    2024-02-23
    Python HTTP请求 错误 解决方法
  • 【uniapp】uni.request请求跨域问题解决方案
    例如,运行H5页面,请求一个地址资源,如果不是本站地址,浏览器就会报跨域错误,这样访问受限 问题呈现 例如,项目代码里是这样写的,运行H5测试 uni.request({url:'https://gi...
    99+
    2023-09-20
    uni-app 前端 服务器 跨域访问 代理访问
  • springboot访问404问题的解决办法
    目录并且排除:误区1:误区2:问题解决:总结第一次自主开发springboot项目,没想到一开始就这么受挫,不管访问什么路径都是404,几乎十二个小时都在找这个错误。 并且排除: 路...
    99+
    2023-05-14
    springboot访问404 springboot 404
  • 多ajax请求的各类问题解决方案
    这篇文章主要讲解了“多ajax请求的各类问题解决方案”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“多ajax请求的各类问题解决方案”吧! ...
    99+
    2024-04-02
  • wireshark 无法抓取mysql 请求的问题解决
    听同事说 wireshark也可以抓取mysql请求 比较兴奋 想试一下 但是无论怎么设置 都抓不到 渐渐抓狂 百度和谷歌 搜索了半天 也没有找到原因 甚至都没有人遇到类似的问题 最后还是靠自己 找到了问题关键 原来 wireshark 识...
    99+
    2019-06-24
    wireshark 无法抓取mysql 请求的问题解决 数据库入门 数据库基础教程 数据库 mysql
  • Django解决跨域请求的问题
    一、引入   对于想要利用django框架实现前后端分离的童鞋来说,首要的问题便是解决跨域请求的问题。何为跨域请求?简单来说,就是当前发起的请求的域与该请求指向的资源所在的域不一致。当协议+域名+端口号均相同,那么就是同一个域。举个例子...
    99+
    2023-01-30
    Django
  • vue:axios请求本地json路径错误问题及解决
    目录axios请求本地json路径错误axios的基础路径如何设置举个栗子吧↓步骤一:入口文件:main.js步骤二:组件:newList.vueaxios请求本地json...
    99+
    2024-04-02
  • 如何使用AngularJS跨站请求解决jsonp请求问题
    这篇文章将为大家详细讲解有关如何使用AngularJS跨站请求解决jsonp请求问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这是我的请求:我在浏览器模板赋值的时候发...
    99+
    2024-04-02
  • ajax本地跨域请求以及解决方法
    什么是跨域? 我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源,只要没有同时满足这三个条件的请求即为跨域请求,跨域请求控制台一般会出...
    99+
    2023-09-15
    ajax php apache Powered by 金山文档
  • java返回json请求中文变成问号的问题及解决
    目录java返回json请求中文变成问号json返回中文全是问号java返回json请求中文变成问号 原来在个人项目时,用layui的数据表格获取数据时,不会出现中文变问号问题 后来...
    99+
    2024-04-02
  • 如何解决php 请求丢失问题
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑如何解决php 请求丢失问题?php curl post请求丢失'+'问题背景: 使用与友商做免登录授权的跳转,发现授权偶尔失败,经过日志查看,加密码中带...
    99+
    2017-06-12
    php
  • 如何解决Ajax请求跨域问题
    这期内容当中小编将会给大家带来有关如何解决Ajax请求跨域问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、解决方案:1,在服务器端的响应头中添加一个http参数:res.setHeader(&quo...
    99+
    2023-06-08
  • Springboot怎么解决跨域请求问题
    这篇文章主要介绍“Springboot怎么解决跨域请求问题”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Springboot怎么解决跨域请求问题”文章能帮助大家解决问题。1、什么是跨域由于浏览器同源...
    99+
    2023-07-06
  • 解决SpringCloudfeignGET请求无法用实体传参的问题
    目录Spring Cloud feign GET请求无法用实体传参解决办法Spring Cloud Feign异步调用传参问题方案1方案2总结Spring Cloud feign G...
    99+
    2023-01-01
    Spring Cloud feign GET请求实体传参 feign GET请求
  • Vue项目部署到IIS后刷新报错404的问题及解决方法
    这里需要用到URL重写工具 --URL Rewrite(默认没有,需要自己下载安装) 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具...
    99+
    2022-11-13
    vue部署后刷新404 vue部署IIS
  • 如何解决php curl请求失败问题
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。如何解决php curl请求失败问题php curl 发送请求失败问题前提:运行在命令行模式中(没有超时设置)多次调用curl ,可能出现发送请求失败的问题, 原因可以...
    99+
    2020-05-27
    php curl
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作