http协议

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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值