• 大小: 7KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: Python
  • 标签: python  http  

资源简介

用python3写的基于http协议的通讯端,可以将客户端组织的数据发往服务器,自动帮你管理session,支持失败自动重试

资源截图

代码片段和文件信息

# -*- coding:utf-8 -*-
#!/usr/bin/python3

from http import client
from urllib.parse import urlencode
from urllib.parse import urlparse
import time

class HttpClient:
    ‘‘‘
    基于http协议的通讯端,可以将客户端组织的数据发往服务器自动帮你管理session
    ‘‘‘
    C_HTTP_HEADER_USER_AGENT = ‘user-agent‘
    C_HTTP_HEADER_COOKIE = ‘cookie‘
    C_HTTP_HEADER_SET_COOKIE = ‘Set-Cookie‘
    __server=None
    __port=None
    __service=None
    __timeout = None
    __sessionidname = None
    __cookies = {}
    __requestheaders = {}
    __hasresponse = False
    __response = None

    def setTimeout(self timeout):
        ‘‘‘设置超时时间
        parameter
timeout 超时时间
        return
None
        ‘‘‘
        self.__timeout = timeout

    def addRequestHeader(self headerName value):
        ‘‘‘
        添加请求头信息
        parameter
headerName 请求名
value 请求内容
return
None
        ‘‘‘
        if headerName in self.__requestheaders.keys():
            del self.__requestheaders[headerName]
        self.__requestheaders[headerName] = value

    def setSessionIdName(self sessionIdName):
        ‘‘‘
        设置sessionid的名字,通过此属性可以避免每次提交请求都创建新session的问题
        parameter
sessionIdName session的名字
        return
None
        ‘‘‘
        self.__sessionidname = sessionIdName

    def clearRequestHeaders(self):
        ‘‘‘
        清除请求头
        ‘‘‘
        self.__requestheaders.clear()

    def send(self method url parameters):
        ‘‘‘
        发送数据
        parameter
            method GET/POST
            url    请求地址http://127.0.0.1:8080/serveric/demo1
            parameters 请求Dict
        return
True/False
        ‘‘‘
        self.__hasresponse = False
        urlres = urlparse(url)

        for i in range(1 3):
            conn = client.HTTPConnection(urlres.hostname urlres.port False timeout=self.__timeout)
            try:
                if “POST“ == method.upper():
                    self.addRequestHeader(“Content-Type“ “application/x-www-form-urlencoded“)
                    self.addRequestHeader(“Cache-Control“ “no-cacheno-storemust-revalidatepost-check=0ptr-check=0“)
                    self.addRequestHeader(‘Accept‘ ‘text/plain‘)
                    self.addRequestHeader(“Connection“ “Keep-Alive“)

                sCookies = self.map2String(self.__cookies ‘;‘)
                if not sCookies.find(self.__sessionidname):
                    sCookies = ““.join([sCookies “;“ self.__sessionidname “=“ self.__cookies[self.__sessionidname]])

                if sCookies != None and sCookies != ““:
                    self.addRequestHeader(self.C_HTTP_HEADER_COOKIE sCookies) #把Cookies信息加入RequestHeader

                sParams = urlencode(parameters encoding=‘gbk‘)
                conn.request(method urlres.path body=sParams headers = self.__requestheaders)
                result = conn.getresponse()
                if result.status != 200:
                    return False
                self.__response= result.read().decode(‘utf-8‘)
                s

评论

共有 条评论