子类继承和BaseHTTPRequestHandler

子类继承和BaseHTTPRequestHandler

子类继承

# 定义一个父类
class Person(object):
    def __init__(self, name, gender, age):
        self.name = name
        self.gender = gender
        self.age = age
# 定义一个Student子类,Student继承父类Person
class Student(Person):
    def __init__(self, name, gender, age, school, score):
        super(Student,self).__init__(name,gender,age)   # 对子类初始化,并将参数传递进子类
        self.school = school
        self.score = score
# 也可通过不继承的方式直接传递
class Student2():
    def __init__(self, name, gender, age, school, score): 
        self.name = name
        self.gender = gender
        self.age = age
        self.school = school
        self.score = score
s = Student('Alice', 'female', 18, 'Middle school', 87)
print(s.school)
print(s.name)

BaseHTTPRequestHandler

1. server端

import datetime
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class Resquest(BaseHTTPRequestHandler):
    def handler(self):
        print("data:", self.rfile.readline().decode())
        self.wfile.write(self.rfile.readline())
    # 构造url的get数据
    def do_GET(self):
        print(self.requestline)
        if self.path != '/hello':
            self.send_error(404, "Page not Found!")
            return
        data = {
            'result_code': '0',
            'result_desc': 'Success',
            'timestamp': '',
            'data': {'message_id': '25d55ad283aa400af464c76d713c07ad'}
        }
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        # 里面需要传入二进制数据,用encode()函数转换为二进制数据
        self.wfile.write(json.dumps(data).encode())
    def do_POST(self):
        print('headers: ', self.headers)
        print('--------\n')
        print('command: ', self.command)
        print('--------\n')
        # 重点在此步!读取post内容,并固定只读取报文长度字符串
        req_datas = self.rfile.read(int(self.headers['content-length']))
        print(req_datas.decode())
        data = {
            'result_code': '1',
            'result_desc': 'Response back success',
            'timestamp': str(datetime.datetime.now()),
            'data': {'message_id': '25d55ad283aa400af464c76d713c07ad'}
        }
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        # 写入应答信息
        self.wfile.write(json.dumps(data).encode('utf-8'))
if __name__ == '__main__':
    host = ('127.0.0.1', 9000)
    server = HTTPServer(host, Resquest)
    print("Starting server, listen at: %s:%s" % host)
    server.serve_forever()

2. client端

import datetime
import requests
def req():
    data = {
        'result_code': '99',
        'result_desc': 'Post Success',
        'timestamp': str(datetime.datetime.now()),
        'data': {'message_id': '35d56ad283gb500af464c76d713c17ac'}
    }
    # 获取server端url数据
    response = requests.get('http://127.0.0.1:9000/hello')
    print(response.status_code)
    print(type(response))
    print(response.headers)
    # 向server端发送数据,post为发送数据获得的应答信息
    post = requests.post('http://127.0.0.1:9000', json={'data': data})
    print(post.json())
if __name__ == '__main__':
    req()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值