[Android]通讯协议设计

本文介绍了Android应用程序与Web服务器之间的通信协议设计,涉及登录、注册、更新地理位置、下单和订单完成等协议。协议使用JSON格式,通过身份字段区分司机和乘客。登陆成功后,sessionid会被缓存并用于后续交互。同时,文章探讨了状态机设计和通信协议简化策略,以降低代码复杂性和提高效率。
摘要由CSDN通过智能技术生成

Andoroid与Web

登陆协议

  • 登陆协议的设计包括与服务器通信协议和得到服务器相应数据格式定义

  • 与服务器通信协议主要是请求URL“/login”,协议数据格式为json对象,三个键值对

  • 响应数据分为成功,失败两种

    • reslut字段,recode字段,sessionid,orderid,status

    • 失败时,result字段,reason字段

      === =给服务端的协议====
      https://ip:port/login [json_data]
      {
      username: “gailun”,
      password: “123123”,
      driver: “yes”
      }

      === =得到服务器响应数据====

      //成功
      {
      result: “ok”,
      recode: “0”,
      sessionid: “online-driver-xxxx-xxx-xxx-xxxx”,
      orderid:“NONE”,
      status:“idle”
      }
      //失败
      {
      result: “error”,
      reason: “why…”
      }

  • 由于刚登陆是没有订单的,所以会直接先置空,刚登陆为idle状态,所以要先置为IDLE,orderid,sessionid,status,这些都会存在前端的一个单例类中

  • 注意,登陆的通信协议是司机和乘客公用的协议,服务器根据前端数据的driver身份字段,在后端返回不同角色应该添加的数据(如sessionid不同,不同的状态机)

  • 登陆成功会生成生成sessionid并缓存到redis(online-driver(passenger)-xxxx-xxx-xxx-xxxx),再重置生命周期

注册协议

  • 通信协议请求路径为/reg,数据json对象都是一些角色信息的键值对,注意driver字段
 ==== 给服务端的协议 ====   
    https://ip:port/reg [json_data]  
    {
        username: "gailun",
        password: "123123",
        driver:   "yes/no",
	    tel:      "13331333333",
	    email:    "danbing_at@163.cn",
	    id_card:  "2104041222121211122"
    }



     ====得到服务器响应数据 ====
     注册成功就默认为登陆状态

       //成功
       {
            result: "ok",
            recode: "0",
            sessionid: "online-drive
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值