Estoy un poco perdido, tengo una aplicación python ejecutándose en una raspberry pi y una aplicación java ejecutándose en otro dispositivo.
Quiero hacer una llamada desde la aplicación Java y hacer que Python haga algunas cosas con la solicitud y luego envíe una respuesta a la aplicación Java.
En este momento puedo hacer una llamada a python y procesar eso, tengo algunos problemas para enviar una respuesta y hacer que Java la procese.
Para java tengo un servidor tomcat y un servidor flask para python
Para mi código java hice lo siguiente
public void doSwitch(String urlString) { URL url = null; HttpURLConnection con = null; try { url = new URL(urlString); con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.setRequestProperty("Accept", "application/json"); con.getInputStream(); } catch (IOException e) { log.error(String.format("An error occurred: %s", e)); throw new ConnectionFailedException("An error occurred", e); } finally { if (con != null) { con.disconnect(); } } }para python hice lo siguiente
import serial import time from flask import Flask, redirect, jsonify, url_for app = Flask(__name__) if __name__ == '__main__': app.debug = True app.run() @app.route('/light/on') def lights_on(): serialComs(b"on\n") line = serialComs(b"status\n") return redirect('/' + line) @app.route("/light/off") def lights_off(): serialComs(b"off\n") line = serialComs(b"status\n") return redirect('/' + line) @app.route("/light/status") def light_status(): status = serialComs(b"status\n") if status == "": status = "unknown" return status @app.route("/<lightstatus>") def lights(lightstatus): print(lightstatus) return jsonify({'status': lightstatus}) def serialComs(state): ser = serial.Serial('/dev/ttyAMA0',9600 , timeout=1) ser.flush() ser.write(state) time.sleep(0.5) line = ser.readline().decode('utf-8').rstrip() return lineSé que el código Java aún no responde, pero aún no estoy seguro de cómo hacerlo.
¿Qué necesito mirar/leer para que Java obtenga algunos datos de python? No tengo idea de dónde buscar.
Puede ser un problema con CORS. Tienes que habilitar para redirigir la respuesta a otra API. De forma predeterminada, está habilitado para conectarse solo a través del navegador.