使用python搭建服務(wù)器并實(shí)現(xiàn)Android端與之通信的方法
前言
好久沒有更技術(shù)文了,再不寫怕是博客要廢掉了,今天更一篇關(guān)于搭建服務(wù)端并與Android端通信的文章,為了節(jié)省代碼量,服務(wù)端使用Python Flask,Android端使用Okhttp,還是老樣子,文章不講原理只給具體實(shí)現(xiàn),想要了解原理可至官網(wǎng)詳細(xì)研究。
服務(wù)端
環(huán)境:服務(wù)端使用Python3.5+PyCharm
新建Flask項(xiàng)目
看圖:
然后create,初始化完成之后項(xiàng)目結(jié)構(gòu)應(yīng)該類似如下:
其實(shí)這時(shí)候直接啟動(dòng)項(xiàng)目就可以在瀏覽器訪問到:
這就是使用現(xiàn)成框架的好處hhh,但是我們希望實(shí)現(xiàn)與客戶端的通信,自然需要再做進(jìn)一步code.
編寫代碼接受來自客戶端的數(shù)據(jù)
首先我們看一下hello_world的代碼:
@app.route('/') def hello_world(): return 'Hello World!'
這里@app.route(‘/')意思就是訪問你服務(wù)端地址時(shí)調(diào)用這個(gè)方法,所以我們可以通過這種方式實(shí)現(xiàn)自己的需求,比如:
@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']的返回值是你客戶端發(fā)送的tag為demo_tag的數(shù)據(jù),下文會(huì)詳細(xì)介紹如何發(fā)送數(shù)據(jù),最后返回值你可以自己指定,這里隨便給了一個(gè)。到這里服務(wù)端已經(jīng)ok了,我們看看客戶端如何實(shí)現(xiàn).
Android端
客戶端使用Okhttp,需要導(dǎo)入兩個(gè)jar包,地址
jar包下載地址: http://square.github.io/okhttp/
注意2個(gè)jar包都要,圖中3個(gè)圈點(diǎn)完就ok了,下載到本地自己導(dǎo)入,這部分就不詳細(xì)寫了,不會(huì)導(dǎo)入的可以Google一下。
如果不想手動(dòng)導(dǎo)入jar包可以:
implementation ‘com.squareup.okhttp3:okhttp:3.11.0'
導(dǎo)入之后直接看代碼:
@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";//替換成自己的服務(wù)器地址 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, "服務(wù)器錯(cuò)誤", 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(); } }); } } }); } }); }
我這里隨機(jī)生成了一個(gè)數(shù)組并將其發(fā)送到了服務(wù)器端,核心代碼很簡單,有框架真的可以為所欲為,寫不動(dòng)了吃飯去了,也許有心情會(huì)再更的詳細(xì)點(diǎn),給份現(xiàn)成代碼自己研究研究吧:
https://github.com/DmrfCoder/OkHttpDemo
以上這篇使用python搭建服務(wù)器并實(shí)現(xiàn)Android端與之通信的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
通過Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡易接口測試平臺(tái)
這篇文章主要介紹了通過Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡易接口測試平臺(tái),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11python實(shí)現(xiàn)的web監(jiān)控系統(tǒng)
這篇文章主要介紹了python實(shí)現(xiàn)的web監(jiān)控系統(tǒng),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04Django框架視圖層URL映射與反向解析實(shí)例分析
這篇文章主要介紹了Django框架視圖層URL映射與反向解析,結(jié)合實(shí)例形式分析了Django框架普通url映射、命名URL參數(shù)映射、分布式URL映射、反向解析等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07利用python微信庫itchat實(shí)現(xiàn)微信自動(dòng)回復(fù)功能
最近發(fā)現(xiàn)了一個(gè)特別好玩的Python 微信庫itchat,可以實(shí)現(xiàn)自動(dòng)回復(fù)等多種功能,下面這篇文章主要給大家介紹了利用python微信庫itchat實(shí)現(xiàn)微信自動(dòng)回復(fù)功能的相關(guān)資料,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-05-05python統(tǒng)計(jì)字母、空格、數(shù)字等字符個(gè)數(shù)的實(shí)例
今天小編就為大家分享一篇python統(tǒng)計(jì)字母、空格、數(shù)字等字符個(gè)數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06用Python創(chuàng)建簡易網(wǎng)站圖文教程
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著用Python創(chuàng)建簡易網(wǎng)站展開,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下2021-06-06PyTorch 中的傅里葉卷積實(shí)現(xiàn)示例
這篇文章主要介紹了PyTorch 中的傅里葉卷積實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12