使用python搭建服务器并实现Android端与之通信的方法


Posted in Python onJune 28, 2019

前言

好久没有更技术文了,再不写怕是博客要废掉了,今天更一篇关于搭建服务端并与Android端通信的文章,为了节省代码量,服务端使用Python Flask,Android端使用Okhttp,还是老样子,文章不讲原理只给具体实现,想要了解原理可至官网详细研究。

服务端

环境:服务端使用Python3.5+PyCharm

新建Flask项目

看图:

使用python搭建服务器并实现Android端与之通信的方法

然后create,初始化完成之后项目结构应该类似如下:

使用python搭建服务器并实现Android端与之通信的方法

其实这时候直接启动项目就可以在浏览器访问到:

使用python搭建服务器并实现Android端与之通信的方法

这就是使用现成框架的好处hhh,但是我们希望实现与客户端的通信,自然需要再做进一步code.

编写代码接受来自客户端的数据

首先我们看一下hello_world的代码:

@app.route('/')
def hello_world():
  return 'Hello World!'

这里@app.route(‘/')意思就是访问你服务端地址时调用这个方法,所以我们可以通过这种方式实现自己的需求,比如: ​

@app.route('/demo', methods=['POST'])
def demo():
  value = request.form['demo_tag']
  print(value)
  return "ok"

上面代码的意思就是你可以通过 http://127.0.0.1:5000/demo

访问到demo方法,request.form[‘demo_tag']的返回值是你客户端发送的tag为demo_tag的数据,下文会详细介绍如何发送数据,最后返回值你可以自己指定,这里随便给了一个。到这里服务端已经ok了,我们看看客户端如何实现.

Android端

客户端使用Okhttp,需要导入两个jar包,地址

jar包下载地址: http://square.github.io/okhttp/

使用python搭建服务器并实现Android端与之通信的方法

注意2个jar包都要,图中3个圈点完就ok了,下载到本地自己导入,这部分就不详细写了,不会导入的可以Google一下。

如果不想手动导入jar包可以: ​

implementation ‘com.squareup.okhttp3:okhttp:3.11.0'

导入之后直接看代码:

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ok = findViewById(R.id.ok);
    username = findViewById(R.id.username);
    password = findViewById(R.id.password);


    ok.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        String name = String.valueOf(username.getText());
        String pass = String.valueOf(password.getText());
        String url = "http://112.86.199.151:5000/gesture";//替换成自己的服务器地址
        SendMessage(url, name, pass);
      }
    });
  }


  private void SendMessage(String url, final String userName, String passWord) {

    value = new float[550];
    Random random = new Random();
    for (int i = 0; i < 550; i++) {
      if (i % 2 == 0) {
        value[i] = random.nextFloat();
      } else {
        value[i] = -random.nextFloat();
      }

    }
    String str_value = FloatArrayToString(value);

    OkHttpClient client = new OkHttpClient();
    FormBody.Builder formBuilder = new FormBody.Builder();
    formBuilder.add("demo", str_value);

    Request request = new Request.Builder().url(url).post(formBuilder.build()).build();
    Call call = client.newCall(request);
    call.enqueue(new Callback() {
      @Override
      public void onFailure(Call call, IOException e) {
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                Toast.makeText(MainActivity.this, "服务器错误", Toast.LENGTH_SHORT).show();
              }
            });
          }
        });
      }

      @Override
      public void onResponse(Call call, final Response response) throws IOException {
        final String res = response.body().string();
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            if (res.equals("0")) {
              runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
                }
              });
            } else {
              runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  Toast.makeText(MainActivity.this, "成功"+res, Toast.LENGTH_SHORT).show();
                }
              });

            }

          }
        });
      }
    });

  }

我这里随机生成了一个数组并将其发送到了服务器端,核心代码很简单,有框架真的可以为所欲为,写不动了吃饭去了,也许有心情会再更的详细点,给份现成代码自己研究研究吧:

https://github.com/DmrfCoder/OkHttpDemo

以上这篇使用python搭建服务器并实现Android端与之通信的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
python实现从网络下载文件并获得文件大小及类型的方法
Apr 28 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python简单定义与使用二叉树示例
May 11 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
详解Python学习之安装pandas
Apr 16 Python
Python的bit_length函数来二进制的位数方法
Aug 27 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
简单谈谈Python面向对象的相关知识
Jun 28 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 Python
python全栈要学什么 python全栈学习路线
Jun 28 #Python
使用python 写一个静态服务(实战)
Jun 28 #Python
python适合人工智能的理由和优势
Jun 28 #Python
python画图的函数用法以及技巧
Jun 28 #Python
使用python爬取微博数据打造一颗“心”
Jun 28 #Python
详解python和matlab的优势与区别
Jun 28 #Python
python中while和for的区别总结
Jun 28 #Python
You might like
php继承的一个应用
2011/09/06 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
使用django实现一个代码发布系统
2019/07/18 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
优秀团员事迹材料
2014/12/25 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python