#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version : 0.0.1
# @File : server_demo.py
# @Time : 2019-11-13 12:15
# @Site :
# @Software: PyCharm
# @Author : KANGXINWEN
# @Author_email: singbogo@163.com
# @description:
# !/usr/bin/python
# encoding=utf-8
'''
基于BaseHTTPServer的http server实现,包括get,post方法,get参数接收,post参数接收。
'''
import json
import http.server
import socketserver
import io, shutil
from urllib.parse import urlparse, parse_qs, unquote, urlunsplit
import os, sys
import urllib.request
PORT = 7700
class MyRequestHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
mpath, margs = urllib.request.splitquery(self.path) # ?分割
self.do_action(mpath, margs)
def do_POST(self):
mpath, margs = urllib.request.splitquery(self.path)
datas = self.rfile.read(int(self.headers['content-length']))
self.do_action(mpath, datas)
def do_action(self, path, args):
if not args:
args = str("")
elif isinstance(args, bytes):
args = str(args)
self.outputtxt(str(path) + args)
def outputtxt(self, content):
# # 指定返回编码
enc = "UTF-8"
content = content.encode(enc)
self.getcontent(content)
f = io.BytesIO()
f.write(content)
f.seek(0)
self.send_response(200)
self.send_header("Content-type", "text/html; charset=%s" % enc)
self.send_header("Content-Length", str(len(content)))
self.end_headers()
shutil.copyfileobj(f, self.wfile)
def getcontent(self, content):
# urldecode
string = urllib.parse.unquote(str(content))
print(string)
handler = MyRequestHandler
with socketserver.TCPServer(("0.0.0.0", PORT), handler) as httpd:
print("server starting..", PORT)
httpd.serve_forever()