【Java】Java 调用 Python 推送数据 Http(s)

【Java】Java 调用 Python 推送数据 Http(s)

说明

​ 为啥一个好好的岗位是Java开发工程师要去做写Python呢?因为产品经理安排的(突然多少有点明白为啥程序员和产品经理会一直开撕)。由于在选择企业的时候没看清企业性质,看了要求以为就是互联网企业,现在看看初为社畜的我还是太天真了。不过既然这几天已经在写Python脚本了,那也不能浪费这段时间的经历了,毕竟Python的闪光点也不少。

​ Java调用Python的方法很多先说

第一种 在Java类中直接执行Python语句这一种方法用的不多、也不推荐大家使用

第二种 在Java类中直接调用Python脚本这一种方法用的不多、也不推荐大家使用

第三种 使用Runtime.getRuntime()执行Python脚本文件,推荐使用!因为这种办法可以让进程与程序交互,可以看到出现的问题,便于解决。

上方的方法在这里不说明 这一次说明的是通过Http去调用Python的服务! 这一种方法维护起来方便、耦合性不高,可以放在内网中调用也不用考虑安全性。

🍟 首先Python

🥩介绍

​ 第一点要了解Flask也不难就是安装然后导入就好了

​ 第二点就要看自己要悄悄推送数据的网站是否支持json

​ 最后就是编码

🥩开始

1.安装
pip install flask

2.简单使用
创建Flask框架。(社区版没有直接创建的功能,专业版有)
# 导入Flask类库
from flask import Flask
# 创建应用实例
app = Flask(__naem__)
# 视图函数(路由)
@app.route('/')
def index():
	return '<h1>Hello Flask!<h1>'
# 启动实施(只在当前模块运行)
if __name__ == '__main__':

看Content-Type 是否是 application/json; 如果是的话就恭喜你 可以接着下一步

在这里插入图片描述

查看推送的数据 不管他们的是这么组合的 凡是满足上方条件的就可以接着往下面玩耍

在这里插入图片描述

到这里就是编码啦 我先贴出一份代码 在之前要安装好Flask哦 还有我们的requests 、json模型

import json
import requests
from flask import Flask, request

app = Flask(__name__)


@app.post("/saveBaseInfo")
def saveBaseInfo():
    # 获取请求体
    data = request.get_data()
    # 格式化一下
    json_data = json.loads(data.decode("utf-8"))
    # 这个就是要推送的地址 要注意他们这个地址可以外部访问哈
    url = "https://xxx.com/patientTube/savePatientTube"
    # 回调按他们网站的Referer写就没有问题
    referer = "https://xxx.com/referer"
    # 发送response请求
    # get_headers()、login(), 都是方法
    response = requests.post(url, data=json_data, headers=get_headers(login(), referer))
    # 接收结果
    json_data_response = json.loads(response.text)
    print(json_data_response)
    return json_data_response


# 见名 data要按照他们的接口参数写哦 常常按一下F12看看哦 不要照搬哈!
def login():
    login_url = "https://xxx.com/login"

    data = {"username": "账号",
            "password": "密码"}
    req = {
        "url": login_url,
        "method": "post",
        "data": data,
        "allow_redirects": False  # 关闭重定向
    }
    res = requests.request(**req)
    session_id = res.cookies['JSESSIONID']
    logging.info("sessionId: " + session_id)
    return session_id


# headers是根据他们的网站头去编写的 可以直接去复制
def get_headers(session_id, referer):
    headers = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Connection": "keep-alive",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Host": "xxx.com",
        "Origin": "https://xxx.com",
        "Referer": referer,
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest",
        "Cookie": 'JSESSIONID=' + session_id
    }
    return headers

🍟 然后Java

🥩介绍

​ 这个就简单了随便写一个Http(s)请求就好了

// 创建一个Json数据
JsonObject jsonObject = Json.createObjectBuilder()
	.add("username", "hnpdrds")
	.add("password", "hnpdrds123")
	.build();
String post = HttpUtil.post("http://localhost:5000/saveBaseInfo", jsonObject.toString());
JSONObject dataJson = JSONObject.parseObject(post);
if (dataJson == null || dataJson.getInteger("code") != 200) {
	return null;
}
// 这个的获取就取决于你是这么返回你Python成功的数据了 我是自己返回了他们接口的结构没有统一(Ps:我不想写)
dataJson.get("data");
  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PerryLes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值