java调用 python,java如何调用python代码
1.问题描述爪哇平台要调用皮洪平台已有的算法,为了减少耦合度,采用皮洪平台提供安静的接口,Java平台负责来调用,采用Http Json格式交互。
2.解决方案2.1 JAVA平台侧2.1.1 项目代码公共静态字符串调用算法(字符串URL,HashMap参数)抛出异常{ http headers headers=new http headers();标题。设置内容类型(媒体类型。解析媒体类型( application/JSON;charset=UTF-8 ));headers.add(Accept ,MediaType .应用程序_ JSON。tostring());HttpEntityString httpEntity=新的httpEntity(JSON对象。tojsonstring(params),头);rest模板rst=new rest模板();响应实体字符串stringresponse实体=rst。postforentity(URL,httpEntity,string。类);返回stringresponseeentity。getbody();} 2.1.2 代码解析两个入参:url为计算机编程语言提供安静的调用方法;参数参数,项目中参数使用了地图,然后将地图转成了Json,与计算机编程语言服务器约定数据格式传输。
2.2 python平台侧经过反复调研与深思熟虑的考虑后,决定采用瓶提供休息接口,烧瓶是一款非常流行的python web框架,微框架、简洁,社区活跃等。(其实是因为安装的蟒蛇自带了烧瓶,一配置一启动好了,就是这么巧)
2.2.1 项目代码# -*-编码:utf-8 -*-from flask导入flask,request,send _ from _ directory from k _ means导入exec app=Flask(_ _ name _ _)导入日志@ app。route(/)def index():返回 Hello,World!# k均值算法@ app。route(/getKmeansInfoByPost ,methods=[ POST ])def getKmeansInfoByPost():try:result=exec(request。get _ JSON())除了索引错误为e:logging。error(str(e))return Exception: str(e)Exception key error as e:logging。error(str(e))return Exception: str(e)except value error as e:logging。error(str(e))返回 Exception: str(e Exception as e:logging。错误(字符串(e代码解析代码为真实项目示例,去掉了一些配置而已,示例中包含三个方法,分别说一下
(1)最基本休息接口:helloword # -*-编码:utf-8-*-from Flask导入Flask app=Flask(_ _ name _ _)@ app。路由(/)定义索引():返回“你好,世界,”if _ _ name _ _= _ _ main _ _ :app。运行(host= 0。0 .0 .0 ,端口=5000,调试=真)(2)调用其他大蟒文件的休息接口# -*-编码:utf-8-*-来自烧瓶导入烧瓶,来自k_means的请求导入execapp=Flask(__name__)导入日志记录# k均值算法@ app。route(/getKmeansInfoByPost ,methods=[ POST ])def getKmeansInfoByPost():try:result=exec(request。get _ JSON())除了索引错误为e:logging。error(str(e))return Exception: str(e)Exception key error as e:logging。error(str(e))return Exception: str(e)except value error as e:logging。error(str(e))return Exception: str(e Exception as e:logging。错误(字符串(e
(3) 文件下载休息接口# -*-编码:utf-8-*-来自烧瓶导入flask,send _ from _ directory app=Flask(_ _ name _ _)@ app。路由(/path:filename )定义获取图像(filename):返回send_from_directory(dirpath,filename,as _ attachment=True)if _ _ name _ _= _ _ main _ _ :app。运行(host= 0。0 .0 .0 ,端口=5000,调试=真)说明:1.还是瓶框架提供的:发送自目录
2 .直接路径目录,一般可以给个固定存放目录,调用的时候只用给文件名称就可以直接下载对应文件。
2.3 Linux服务器启动python服务nohup python restapi.py说明:1.接收POST方法;2. 从request获取java传过来的参数,对应上面的java调用代码,IT技术分享相关干货,回复关键词获取相应干货,更多知识请关注公众号:「软件老王」,送10本必看《功夫秘籍》;java,发送100多万张商用高清图片;图片,刚毕业发月薪“20k”的java面试问题,持续更新中,如“面试”、“软考”等。并且已经在整理了。
边缘
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。