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


  • 相关阅读:
    毕业了!
    mesos无执行器启动docker
    docker run option
    maintenance
    virtualenv
    multi role
    排序之插入排序
    DLU-1064 美声葱
    codeforces-1025 A Doggo Recoloring
    codeforces-1027 C Minimum Value Rectangle
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426432.html
Copyright © 2011-2022 走看看