凡事都从忙中错,谁人知向静中休
业务程序员如何使用python,简单的检验自己逻辑,本文就简单的以http交互为例简单介绍下:
首先封装下http请求工具类HttpUtil
Get请求
class HttpUtil(object):
//Get参数拼接
def parseParams(self, params):
if params:
result ="?"
for key, valuein params.items():
result = result + key + "=" + value + "&"
return result[:-1]
return ''
def httpGet(self, url="", headers={}, params={}):
requestUrl = url +self.parseParams(params)
request = urllib2.Request(requestUrl)
for key, valuein headers.items():
request.add_header(key, value)
try:
response = urllib2.urlopen(request)
except urllib2.URLError, e:
print e.message
data = response.read()
return data
Post 请求
def httpPost(self, url="", headers={}, params={}):
data = urllib.urlencode(params)
request = urllib2.Request(url=url, data=data)
for key, valuein headers.items():
request.add_header(key, value)
try:
response = urllib2.urlopen(request)
except Exception as e:
print e.message
# print response.info()
# print response.getcode()
data = response.read()
return data
一般都有防止参数篡改Sign校验和身份认证Token
def genToken(self, params):
//实现略
def genSign(self, params):
//实现略
同时可以提供通用配置类,对于不同环境(dev/test),拿取不同配置,此处只简单实现URI配置
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
class GlobalConfig(object):
def xxConfig(self):
config = "http://127.0.0.1:8080"
return config
至此,工具类已经简单实现了,下面就具体校验逻辑了,此处只请求url并简单的打印下返回值,并为对返回值和错误码做校验
# encoding=utf8
import json
import sys
from util.global_config import GlobalConfig
from util.http_util import HttpUtil
reload(sys)
sys.setdefaultencoding('utf-8')
class XxTest(object):
def __init__(self):
self.config = GlobalConfig()
HEADERS = {'XX': 'xx'}
def saveXx(self):
url = self.config.xxConfig() + "/Xx/save"
params = {'AA': 'a', 'BB': 'b'}
print params
print url
api = HttpUtil()
json_data = api.httpPostApi(url, XxTest.HEADERS, params)
print (json.dumps(json.loads(json_data), indent=4, sort_keys=False, ensure_ascii=False))
def getXx(self):
url = self.config.xxConfig() + "/Xx/get"
print url
api = HttpUtil()
json_data = api.httpGetApi(url, XxTest.HEADERS)
print (json.dumps(json.loads(json_data), indent=4, sort_keys=False, ensure_ascii=False))
# 调用
if __name__ == "__main__":
xxTest = XxTest()
xxTest.getXx()
xxTest.saveXx()
这样就可以发送http请求到开发机器了
这里只是简单的封装了Http请求,同理RPC也可以
网友评论