zoukankan      html  css  js  c++  java
  • 基于tcp协议,自行处理http报文

    class HttpRequest:


        '''http请求对象'''


        def __init__(self,protocol,data):

            self.__protocol = protocol

            self.__data = data


        def getHeaderParameter(self,parameterKey):

            __parameterValue = re.findall(r'%s: (.*) '%parameterKey,self.__data)

            if __parameterValue:

                parameterValue = __parameterValue[0].strip()

            else:

                parameterValue = None

            return parameterValue


        def getGetData(self):

            getData = None

            dataStr = re.findall(r' /?(.*) HTTP/1.1 ',self.__data)

            if dataStr:

                dataStr = dataStr[0].strip()

                dataStrList = re.split("&",dataStr)

                getData = {}

                for dataItem in dataStrList:

                    __dataStr = re.split("=",dataItem)

                    getData[__dataStr[0]] = __dataStr[1]

            return getData


        def getPostData(self):

            postData = None

            if self.__data.startswith("POST"):

                dataStr = re.findall(r' (.*)$',self.__data)[0].strip()

                dataStrList = re.split("&",dataStr)

                postData = {}

                for dataItem in dataStrList:

                    __dataStr = re.split("=",dataItem)

                    postData[__dataStr[0]] = __dataStr[1]

            return postData


        def sendHttpResponse(self,body):

            response = '''

    HTTP/1.1 200 OK

    Date: %s

    Server: h5gc

    Content-Type: text/html;charset=utf-8

    Content-Length: %d

    %s

    '''.lstrip() % (

                datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT'),

                len(body),

                body

            )

            self.__protocol.transport.write(response)

            self.__protocol.transport.loseConnection()


  • 相关阅读:
    数据结构第四篇——线性表的链式存储之双向链表
    基本概念之引用赋值需要注意什么?
    基本概念之将引用作为函数的参数有哪些特点?
    基本概念之什么是引用?
    基本概念之模板类有什么优势?
    我的第一篇博文
    为CentOS 6 配置本地YUM源
    为CentOS 6 配置本地YUM源
    poj 1990 MooFest
    [置顶] 学生信息管理系统“重复设置”问题
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426432.html
Copyright © 2011-2022 走看看