python实现post请求

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81568411 pyl...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81568411

pyload={"token": "2280d841c47074107bb903169cd78d4d0a1345970ec6380d0909efc7e77a25cb","sign":"700eae16811bd1844e21c31c3ed0f5b0","page":"3","order":"0","limit":"12","map":""}

headers={'Host': 'usedcar.auto.sina.com.cn',
'Connection': 'keep-alive',
'Content-Length': '186',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Origin': 'http://usedcar.auto.sina.com.cn',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.0.1471.813 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Referer': 'http://usedcar.auto.sina.com.cn/buycar/s/%E8%AF%B7%E8%BE%93%E5%85%A5%E5%93%81%E7%89%8C%E6%88%96%E8%BD%A6%E5%9E%8B',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.8',
}

d=requests.post(url,data=payload,headers=headers)

print(d)

然后服务器报错,但是一样的数据在filder里面却是对的,这是什么原因呢?

后来通过requests的官方文档发现,有这么一句话:

很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个 dict,那么数据会被直接发布出去。

通过抓包软件fillder去看看我在pycharm里面请求和在fillder里面请求的东西来看,最后返回来的数据的形式完全就是不一样了,所以对应正确的格式,我把其转换为string,得出结果和正确一样的,

可以正确返回的表单的值是这样子的:

{"token":"2280d841c47074107bb903169cd78d4d0a1345970ec6380d0909efc7e77a25cb","sign":"700eae16811bd1844e21c31c3ed0f5b0","page":"3","order":"0","limit":"12","map":""}

然后我的目的就是把那些参数化为输出为上面的数据那样子。

所以最后形式为以下那样子:

payload = '{"token":'+' "2280d841c47074107bb903169cd78d4d0a1345970ec6380d0909efc7e77a25cb"'+',"sign":'+'"700eae16811bd1844e21c31c3ed0f5b0"'+',"page":'+'"3"'+',"order":'+'"0"'+',"limit":'+'"12"'+',"map":'+'""'+'}'

接下来发现又是一个很尴尬的事情,服务器直接报错,504错误,开始还去找这是什么原因,后来在网上看到是这样子说的:

wireshark抓包发现:

用reqeusts和curl发送的数据都是一样的,但是,curl有带一个header:"Content-Type": "application/x-www-form-urlencoded"

看来requests也需要加上这个头:

headers = {"Content-Type": "application/x-www-form-urlencoded"}

最后我把我内容的headers换成以上headers,结果还真的是成功了。

虽然为什么是那个头,我还真的不知道是什么一个的原因 。后续知道会陆续去更新的。

 

马上看完文档发现一个问题,就马上来记下来,在新的版本的requests里面,除了对dict格式去编码以外,还可以使用json格式直接去传递,然后它就会被自动编码。这是 2.4.2 版的新加功能:

d=requests.post(url,json=data,headers=headers)
print d
print d.text

相关文章
|
5月前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
192 13
|
6月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
3月前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
79 10
|
3月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
118 9
|
5月前
|
数据采集 Web App开发 文字识别
Python爬虫多次请求后被要求验证码的应对策略
Python爬虫多次请求后被要求验证码的应对策略
|
6月前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
9月前
|
存储 应用服务中间件 开发工具
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
386 15
|
9月前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
187 3
|
9月前
|
JSON 前端开发 JavaScript
Python中如何判断是否为AJAX请求
AJAX请求是Web开发中常见的异步数据交互方式,允许不重新加载页面即与服务器通信。在Python的Django和Flask框架中,判断AJAX请求可通过检查请求头中的`X-Requested-With`字段实现。Django提供`request.is_ajax()`方法,Flask则需手动检查该头部。本文详解这两种框架的实现方法,并附带代码示例,涵盖安全性、兼容性、调试及前端配合等内容,帮助开发者提升Web应用性能与用户体验。
129 0
|
10月前
|
JSON API 数据格式
Python中获取HTTP请求响应体的详解
本文介绍了如何使用Python的`requests`和`urllib`库发送HTTP请求并处理响应体。`requests`库简化了HTTP请求过程,适合快速开发;`urllib`库则更为底层,适用于性能要求较高的场景。文章详细演示了发送GET请求、处理JSON响应等常见操作。
258 3

热门文章

最新文章

推荐镜像

更多