irpas技术客

python发送http请求_Plusroax_python 发送http请求

网络投稿 539

前言

在python中,发送http大多使用requests来发送,因为他使用起来非常方便,代码非常简洁。

快速入门 1.发送get请求 # 导入requests包 import requests url = "http://·/openapi/api" myParams = {"key":"username","info":"plusroax"} # 字典格式,推荐使用,它会自动帮你按照k-v拼接url res = requests.get(url=url, params=myParams) print('url:',res.request.url)# 查看发送的url print("response:",res.text) # 返回请求结果

可以看到,他帮我们自动拼接url地址了

2.发送post请求 # 导入requests包 import requests url = "http://httpbin.org/post" data = {"name": "plusroax","age": 18} # Post请求发送的数据,字典格式 res = requests.post(url=url, data = data)#这里传入的data,是body里面的数据。params是拼接url时的参数 print("发送的body:",res.request.body) print("response返回结果:",res.text)

?

常用请求参数:

requests.get(url=url, params=myParams),之前我们用到了url和params参数,下面介绍一下其他参数 ?

url: url地址params:url参数,字典格式,使用此参数会自动拼接到url地址中data: 请求body中的数据,字典或字符串格式headers: 请求头信息,字典格式cookies: 字典格式,可以通过携带cookies绕过登录files: 字典格式,用于混合表单(form-data)中上传文件timeout: 超时时间(防止请求一直没有响应,最长等待时间),数字格式,单位为秒 常用返回结果: res.status_code: HTTP状态码,如200res.reason: HTTP状态码含义,如 OKres.headers: HTTP响应头信息res.text:获取返回结果,按req.encoding解码res.encoding: 获取当前使用的编码格式res.apparent_encoding:文本真正的编码格式res.cookies: 响应的cookieJar对象,可以通过req.cookies.get(key)来获取响应cookies中某个key对应的值res.json(): (注意,有括号),响应的json对象(字典)格式,慎用!如果响应文本不是合法的json文本,或报错 乱码问题:

如果当前使用的编码格式(res.encoding)和真正的编码格式(res.apparent_encoding)不一样,就会出现乱码。

原因在于requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题.

这么一来,我原本传入的是utf-8编码,但是响应头没有传Content-Type字段,默认用了IOS-8859编码,解析的时候按照IOS-8859-1肯定乱码,与原本编码不符。

解决办法:

用真实编码去解析当前文本

res.encoding=res.apparent_encoding

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python #发送HTTP请求 #快速入门1发送get请求 #requestsurl