1.调用http+pb接口
下载protobful。
具体使用步骤:
1.首先将 pro文件 通过protoc 编译成 py文件。
protoc ./xxx.proto --python_out=./
2.创建test.py文件 调用生成的pb2.py文件的 传入参数类,返回参数类。
3.在服务器上python test.py文件
具体执行python代码:
#-*-coding:utf-8-*-
syntax = "proto2";
#调用生成的pb.py文件
import pb
import requests
URL = "http://ip:port/class"
#创建请求参数类实例
req = pb.Request()
req.business_id =bytes(101)
req.vid = bytes(''.encode('utf-8'))
req.title = bytes('')
#请求参数转化为字符串
reqString= req.SerializeToString()
#发送请求
res = requests.post(URL, data=reqString)
#创建返回参数实例类
target = pb.Response()
#解析返回参数
target.ParseFromString(res.content)
# 赋值各类字段属性给相应变量
id=target.id
print(vid)
2.json请求http服务
cmd命令:
curl -H "Content-Type: application/json" -X POST -d '{ }' http://ip:port/class
python代码:
①适用于接受json格式
#请求体
req={
}
URL = "http://%s:%d/class"%(host,port)
#调用接口
res = requests.post(URL, json=req)
result = json.loads(res.text)
②接收json编码后的格式
url='http://ip:port/class'
values ={ } #json体
dd = json.dumps(values) # 对数据进行JSON格式化编码
req = urllib2.Request(url, dd) # 生成页面请求的完整数据
response = urllib2.urlopen(req) # 发送页面请求
print response.read() # 获取服务器返回的页面信息
3.封装服务
from flask import Flask, request
app = Flask(__name__)
@app.route('/application', methods=['POST', 'GET'])
def main():
pass
if __name__ == '__main__':
app.run('0.0.0.0', 80)
附加:
unicode编码转中文:
var=" "
var.encode().decode('utf8')
对于提取出来的数据形式为"\\uXXXX"的、
t1 = eval(repr(t).replace("\\\\", "\\"))
图片转为字节流形式:
from io import BytesIO
with open("xxx.jpg") as f:
byte_image=BytesIO(f.read()).getvalue()
图片转base64格式:
import base64
with open(file_path, "rb") as f:
base64_data = base64.b64encode(f.read())
解析图片URL地址:
from urllib import parse
parse.unquote("")
读取配置文件:
import configparser
cf = configparser.ConfigParser()
cf.read(file_path)
获取具体值:
cf.get("key1", "key2 ")
配置文件ini.config示例:
[key1]
key2=1000
添加日志信息
import logging
import traceback
# 创建日志级别
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# 创建日志文件
handler_info = logging.FileHandler('info_log.txt')
handler_info.setLevel(logging.INFO)
# 定义日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler_info.setFormatter(formatter)
logger.addHandler(handler_info)
#添加日志信息:
logger.info(traceback.format_exc())