【安卓学习之代码学习】 我的app通信过程(笔记)

经过会忘记通信的整个过程机制,所以将这个过程的代码记录下,方便查看,理解

█ 一、目录结构

  • 后面再添加

█ 二、数据格式

 ● 通信使用第三方库com.squareup.okhttp,数据请求的格式为Map

    /*
     * post
     * 
     * return code -1(网络异常,服务器无法连接) 0(服务端正常响应)
     */
    public int post(String url,Map<String,Object> params,ResourceCallBack callBack) {
        RequestBody body = new FormEncodingBuilder().add("requestJson", FastJsonUtil.toJson(params)).build();
        Request.Builder builder = new Request.Builder().url(url).post(body)
                .addHeader("Accept", "application/json")
                .addHeader("Connection", "keep-alive");
        builder.addHeader("Cookie", getSessionId());
        Request request = builder.build();
        try {
            Response response = resource.newCall(request).execute();
            storeSessionId(response);
            if(response.isSuccessful()
                    && callBack != null){
                callBack.callBack(response.body().string());
            }
            return 0;
        } catch (IOException e) {
            return -1;
        }
    }

 ● 接收数据分享
   ○ 服务端返回的数据为JSON格式,如下:

{
  "statusCode":"200",
  "message":"",
  "value":{
          "paraList":[  {
                        "ID":"1",
                        "Value":"北京"
                        },
                        {
                        "ID":"2",
                        "Value":"多云"
                        }
                     ]
          }
 }

   ○ 格式说明:

{
  "statusCode":"提示信息",
  "message":"请求失败的具体原因",
  "value":"返回值"
 }

返回状态:statusCode //200请求成功 300请求出错 400会话过期
提示信息:message // statusCode不等于200时,才有值
返回值:value // 任意值,标准【JSON】格式,用阿里巴巴的fastjson解析
   ○ 返回的数据封装成对应的类:

public class CommonResult {
    private String statusCode;
    private String message;
    private String value;
    ...
}

█ 三、应用层调用

想要获取部分数据,先通过服务端提供的api接口来获取数据:
 ● 

        DirectionRequest.getTerminalPara(mContext, new DirectionCallBack() {

                    @Override
                    public void callBack(CommonResult result) {
                        if (result == null) {
                            Toast.makeText(this, "网络请求失败", 2000).show();
                            return false;
                        }
                        String value = result.getValue();
                        if (TextUtils.isEmpty(value)) {
                            Toast.makeText(this, "网络请求失败", 2000).show();
                            return false;
                        }
                        getApiDataDeal(value);
                        return true;
                    }
                });

 ● 

    protected boolean getApiDataDeal(String value) {
        ApiDataResult data = com.alibaba.fastjson.JSON.parseObject(value, ApiDataResult.class);
        ArrayList<HashMap<String, String>> paraList = data
                .getSmartswitchParaList();
        HYStringUtils.printHashMapList(paraList);
        Log.e(" parseResult44", "=======");
        for (int i = 0; i < paraList.size(); i++) {
            HashMap<String, String> hashMap = paraList.get(i);
            String paraID = hashMap.get("paraID");
            String paraValue = hashMap.get("paraValue");
            for (int j = 0; j < 8; j++) {
                if (paraID.equals(formItemList[j].getParaID())) {
                    ......
                    break;
                }
            }
        }
    }

 ● 服务端返回的数据为JSON格式,如下:

{
  "statusCode":"200",
  "message":"",
  "value":{
          "paraList":[  {
                        "ID":"1",
                        "Value":"北京"
                        },
                        {
                        "ID":"2",
                        "Value":"多云"
                        }
                     ]
          }
 }

 ● 格式说明:

{
  "statusCode":"提示信息",
  "message":"请求失败的具体原因",
  "value":"返回值"
 }

返回状态:statusCode //200请求成功 300请求出错 400会话过期
提示信息:message // statusCode不等于200时,才有值
返回值:value // 任意值,标准【JSON】格式,用阿里巴巴的fastjson解析
 ● 另外将返回的数据封装成对应的类:

public class CommonResult {
    private String statusCode;
    private String message;
    private String value;
    ...
}

█ 四、待更新

转载请注明出处:【安卓学习之代码学习】 我的app通信过程(笔记)】
http://blog.csdn.net/ljb568838953/article/details/77109493

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值