标签:_for 服务器 enc 安全 continue 完整性 orm 抛出异常 ISE
一、get请求
1.导入requests后,用get方法就能直接访问url地址,如:http://www.cnblogs.com/yoyoketang/,
2.这里的r也就是response,请求后的返回值,可以调用response里的status_code方法查看状态码
3.状态码200只能说明这个接口访问的服务器地址是对的,并不能说明功能OK,一般要查看响应的内容,r.text是返回文本信息
二、post请求
1.发一个带参数的get请求,如在博客园搜索:yoyoketang,url地址为:http://zzk.cnblogs.com/s/blogpost?Keywords=yoyoketang
2.请求参数:Keywords=yoyoketang,可以以字典的形式传参:{"Keywords": "yoyoketang"}
3.多个参数格式:{"key1": "value1", "key2": "value2", "key3": "value3"}
三、content和text的区别
1.百度首页如果用r.text会发现获取到的内容有乱码,因为百度首页响应内容是gzip压缩的(非text文本)
2.如果是在fiddler工具乱码,是可以点击后解码的,在代码里面可以用r.content这个方法,content会自动解码 gzip 和deflate压缩
四、response的返回内容还有其它更多信息
-- r.status_code #响应状态码
-- r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
-- r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
-- r.json() #Requests中内置的JSON解码器
-- r.url # 获取url
-- r.encoding # 编码格式
-- r.cookies # 获取cookie
-- r.raw #返回原始响应体
-- r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
-- r.raise_for_status() #失败请求(非200响应)抛出异常
五、get与post的区别
1、get参数通过url传递,post放在request body中
2、get请求在url中传递的参数是有长度限制的,而post没有
3、get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感重要信息。
4、get请求只能进行url编码,而post支持多种编码方式(第一种:application/x-www-form-urlencoded,第二种:multipart/form-data,第三种:application/json,第四种:text/xml)
5、get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。
6、GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
(据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。)
标签:_for 服务器 enc 安全 continue 完整性 orm 抛出异常 ISE
原文地址:https://www.cnblogs.com/guo2733/p/10536609.html