Подружить Java и Python

131
25 марта 2019, 04:20

заранее извиняюсь за столь общий и размытый вопрос. Собираемся писать приложение (некоммерческое) для платформы Android, хотим прикрутить к нему сервер, который будет принимать запросы от приложения и отправлять python команды устройствам. Кто может посоветовать стек технологий, может кто работал над подобным? Как облегчить задачу по максимуму?

Answer 1

Можно через flask сделать вебсервер, минимальный пример:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run()

Чтобы в питон установить его:

pip install flask

Например, запускаю я сервер как локальный с портом 12345:

app.run('localhost', port=12345)

В консоли питона появится сообщение:

  • Running on http://localhost:12345/ (Press CTRL+C to quit)

Далее, пишу код на java для отправки GET HTTP запроса к тому серверу:

...
public static String getHTML(String urlToRead) throws Exception {
    StringBuilder result = new StringBuilder();
    URL url = new URL(urlToRead);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    try (BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
        String line;
        while ((line = rd.readLine()) != null) {
            result.append(line);
        }
    }
    return result.toString();
}
public static void main(String[] args) throws Exception {
    String html = getHTML("http://localhost:12345/");
    System.out.println(html);
}

Результат:

Hello World!

Answer 2

Сделайте RESTful-сервис на aiohttp.

READ ALSO
После удаления поля, меняется порядок

После удаления поля, меняется порядок

Ввожу команду и она пишется в репозиторий, и в бдid: 1 name:

218
Как записывать и читать отдельные биты из байта

Как записывать и читать отдельные биты из байта

Допустим у меня есть байт, и в нем я хочу хранить 8 boolean'овКак мне читать и записывать отдельные биты в байт? Пожалуйста без битсета, я хочу понять...

154
Разное выравнивание на разных экранах

Разное выравнивание на разных экранах

Есть 2 блока которые на больших экранах нужно отобразить в один ряд с выравниванием содержимого по левому краю, а на маленьких в два ряда и с выравниванием...

169
Не работают события [закрыт]

Не работают события [закрыт]

Почему в данном примере консоль выдаёт ошибку?

167