django后台和app客户端的搭建指南(python,android)。模拟手机获取验证码的请求
来源:互联网 发布:红警3 for mac版 编辑:程序博客网 时间:2024/06/05 06:00
最近在学习django,就想着自己搭建一个django的服务器,自己写app的客户端,因为django是初学所以还是遇到了几个坑的废话不多先贴出项目地址:https://github.com/ymeddmn/PythonWebDemo
python群号码:387214990
django和android项目的搭建略过
服务端django的项目配置
1,首先将我们创建的app模块配置在setting这里,本例获取验证码用的是logreg模块
2,host的配置如下图,此ip为本机ip地址,DEBUG=True
3,将此处的依赖注释,具体原因我暂时也没有搞明白
4,下面看一下实现请求的代码
这里用post方法获取到请求的参数:手机号,截取前四位返回为客户端
如果请求方法错误会返回给客户端错误信息,转json的操作请看demo
from django.shortcuts import renderfrom django.http import HttpResponsefrom app import utils, JsonUtildef getCode(request): code = 200 des = '' success = True; item = {} body = [] if utils.checkRequestMethon(request, 'POST'): phone = request.POST.get('phone') resCode = phone[0:4] print(resCode) item.setdefault('checkCode', resCode) body.append(item) print(body) else: success = False code = 0 des = '请求方法错误' if success: return HttpResponse(JsonUtil.toResultJson(code, body, '成功').encode('utf-8')) else: return HttpResponse(JsonUtil.toResultJson(code, body, des).encode('utf-8'))
5,Url的配置如下
note:注意转json串的时候这里记得加上ensure_ascii=False,否则客户端中文会无法显示
其他代码请看项目中的 djangoproject
客户端实现Android代码实现
客户端会在在按钮点击的时候用okhttp请求服务器获取验证码,将请求下来的结果显示到按钮上
package demo.horse.com.djangoprojectclient.logreg;import android.Manifest;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.squareup.okhttp.Call;import com.squareup.okhttp.Callback;import com.squareup.okhttp.FormEncodingBuilder;import com.squareup.okhttp.OkHttpClient;import com.squareup.okhttp.Request;import com.squareup.okhttp.Response;import java.io.IOException;import java.net.URLDecoder;import java.nio.charset.Charset;import demo.horse.com.djangoprojectclient.R;public class RegesterActivity extends AppCompatActivity implements View.OnClickListener { private Button btnCode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_regester); initView(); } private void initView() { btnCode = (Button) findViewById(R.id.btn_getcode); btnCode.setOnClickListener(this); } @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { OkHttpClient client = new OkHttpClient(); FormEncodingBuilder builder = new FormEncodingBuilder(); builder.add("phone", "13691599815"); Request request = new Request.Builder() .url("http://192.168.1.100:8000/getCode/") .post(builder.build()) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { e.printStackTrace(); } @Override public void onResponse(Response response) throws IOException { Message msg = handler.obtainMessage(); msg.obj = response.body().string(); handler.sendMessage(msg); } }); } }).start(); } Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { String m = (String) msg.obj; try m = URLDecoder.decode(m, "utf-8"); btnCode.setText(m); } catch (Exception e) { e.printStackTrace(); } return false; } });}
上面唯一需要注意的是 m = URLDecoder.decode(m, “utf-8”);
必须对请求下来的数据进行解码
对了,还要记得加上请求网络权限
下面看一下实现的效果图
请求前,button显示获取验证码
点击请求成功显示请求下来的json串
项目地址https://github.com/ymeddmn/PythonWebDemo
python群号码:387214990
阅读全文
0 0
- django后台和app客户端的搭建指南(python,android)。模拟手机获取验证码的请求
- Android 搭建客户端手机和服务端的交互
- Android搭建客户端,实现手机和服务器的交互
- Android模拟登陆带验证码的网站客户端
- Android模拟登陆带验证码的网站客户端
- 调用后台获取手机客户端提交的经纬度进行定位
- Python的验证码识别,模拟ajax请求,爬取优酷会员(滑稽)
- 手机APP接口:设计一个获取手机验证码的功能
- Android获取手机上安装的APP和正在显示的APP
- Android模拟实现获取验证码时的按钮事件
- android中获取手机验证码的倒计时操作
- 通过Google Play验证Android应用的后台请求
- python 获取客户端的请求头的参数
- 监听手机接收短信——模拟获取短信的验证码
- App和后台通信基于session_id的登录验证
- js如何获取android手机的电话号码和联系人,并且传递给PHP、Java后台
- Android客户端之“微服私访”App的系统学习(一) 本地服务端环境的搭建和部署
- Android获取手机验证码。
- ReadWriteLock使用示例
- c++随机数简单用法
- [Leetcode]_37 Sudoku Solver
- 【荐读】我观察14年才发现,那些很努力却没成就的人都有一个特点
- ubuntu 16.04 安装 xgboost python运行环境
- django后台和app客户端的搭建指南(python,android)。模拟手机获取验证码的请求
- Chrome 常用快捷键
- EL,jstl,OGNL表达式
- github错误:Permission denied to deploy key......
- java对象和Map之间互相转换的三种实现方式
- 调度线程池ScheduledThreadPool使用示例
- 1101. Quick Sort (25)
- 设计模式(16)--迭代器模式
- hdu 3400 Line belt