使用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 相关文章推荐
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
Nov 06 Python
基于python3实现socket文件传输和校验
Jul 28 Python
kafka-python批量发送数据的实例
Dec 27 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
如何基于python把文字图片写入word文档
Jul 31 Python
python使用列表的最佳方案
Aug 12 Python
Python Http请求json解析库用法解析
Nov 28 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 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的一个登录的类 [推荐]
2007/03/16 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
html下载本地
2006/06/19 Javascript
不错的JS中变量相关的细节分析
2007/08/13 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
js快速排序的实现代码
2013/12/08 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
javascript self对象使用详解
2016/10/18 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
使用npy转image图像并保存的实例
2020/07/01 Python
python中sys模块是做什么用的
2020/08/16 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
体育专业个人求职信范文
2013/12/27 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
见习报告怎么写
2014/10/31 职场文书
北京青年观后感
2015/06/15 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
javascript之Object.assign()的痛点分析
2022/03/03 Javascript
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技