使用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 字典(Dictionary)操作详解
Mar 11 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python面向对象类的继承实例详解
Jun 27 Python
python 生成图形验证码的方法示例
Nov 11 Python
django-allauth入门学习和使用详解
Jul 03 Python
windows下python安装pip方法详解
Feb 10 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
python 常见的排序算法实现汇总
Aug 21 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
php HTML无刷新提交表单
2016/04/05 PHP
js时间比较示例分享(日期比较)
2014/03/05 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
javascript中 try catch用法
2015/08/16 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
Python多线程学习资料
2012/12/19 Python
简单的Python抓taobao图片爬虫
2014/10/26 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python底层封装实现方法详解
2020/01/22 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
放飞梦想演讲稿
2014/05/05 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
2014年人事科工作总结
2014/11/19 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫