http协议:
客户端(浏览器、cmd):发送请求包–》网络服务器
返回给客户服务器一个响应包
请求包:
首部:header(可为空)
主体:body(可为空)
响应包:
首部:header(可为空)
主体:body(可为空)
方法:
get
post
delete
put
options
get和post区别:
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
安装:
pip install requests
实例:
import requests
最基本的不带参数的get请求
r = requests.get(‘https://github.com/Ranxf’)
带参数的get请求
r1 = requests.get(
url=‘http://dict.baidu.com/s’, params={‘wd’: ‘python’})
http各种方法的请求方法:
GET请求(通常用于从服务器取数据)
requests.get(“https://github.com/”)
POST请求(用于提交数据给服务器数据)
requests.post(“http://httpbin.org/post”)
PUT请求(用于修改服务器数据)
requests.put(“http://httpbin.org/put”)
DELETE请求
requests.delete(“http://httpbin.org/delete”)
HEAD请求
requests.head(“http://httpbin.org/get”)
OPTIONS请求
requests.options(“http://httpbin.org/get” )
给get请求,传参数
url_params = {‘q’:‘gloryroad’} # 字典传递参数,如果值为None的键不会被添加到url中
r = requests.get(‘https://cn.bing.com/search’,params = url_params)
print(r.url)
响应的内容:
r.encoding #获取当前的编码
r.encoding = ‘utf-8’ #设置编码
r.text #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.status_code #响应状态码(200是正常)
r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()
r.ok # 查看r.ok的布尔值便可以知道是否登陆成功
#特殊方法#
r.json() #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status() #失败请求(非200响应)抛出异常
#encoding=utf-8
import requests
import json
import os
import hashlib
print (“register------”)
data = json.dumps({‘username’: ‘wulaoshi2’, ‘password’: ‘wulaoshi12345’, ‘email’: ‘wulaoshi@qq.com’}) #
r = requests.post(‘http://39.106.41.11:8080/register/’, data= data)
print (r.status_code)
print (r.text)
print (type(r.json()))
print (str(r.json()))
json.dumps()把字典数据转换成字符串传递。网络中数据都是以字符串传递
小练习:
#encoding=utf-8
import requests
import json
import os
import hashlib
print (“register------”)
with open(“c:\code\a.txt”,“r”) as f:
num=int(f.read())
data = json.dumps({‘username’: ‘yanjinfeng’+str(num), ‘password’: ‘yanjinfeng12345’, ‘email’: ‘yanjinfeng@qq.com’}) #
r = requests.post(‘http://39.106.41.11:8080/register/’, data= data)
print (r.status_code)
print (r.text)
print (type(r.json()))
print (str(r.json()))
with open(“c:\code\a.txt”,“w”) as f:
num+=1
f.write(str(num))
吴老师代码:
import json
import os
import hashlib
import pickle
#需要默认文件里面写个初始值1即可
with open(“e:\data.txt”) as fp:
unique_number = fp.readline().strip()
print (“register------”)
data = json.dumps({‘username’: ‘userdata’+unique_number, ‘password’: ‘wulaoshi12345’, ‘email’: ‘wulaoshi@qq.com’}) #
r = requests.post(‘http://39.106.41.11:8080/register/’, data= data)
print (r.status_code)
print (r.text)
print (type(r.json()))
print (str(r.json()))
assert “{‘code’: ‘00’, ‘userid’:” in str(r.json())
with open(“e:\data.txt”,‘w’) as fp:
fp.write(str(int(unique_number)+1))