客户端给服务器传递数据常用的几种方式

1. 概述

这篇文章主要记录下客户端给服务器传递数据经常用到的2种方式:
1>:给服务器传递json,每个字段都是单独的,不含有list集合;
2>:给服务器传递json,里边有一个 list集合,集合中包含有多个对象,除过list集合之外,其余都是单个字段;
第二种方式数据格式如下:


图片.png
2. 实现方式如下

前提:
/**
 * Email: 2185134304@qq.com
 * Created by Novate 2018/7/26 14:03
 * Version 1.0
 * Params:
 * Description:    从服务器返回的Json 转为 String
*/

public class Json2String {
    public  static String buildRequestParams(Object params){
        Gson gson=new Gson();
        String jsonStr=gson.toJson(params);
        return jsonStr;
    }
}
1>:对于第一种:直接把传递的字段放到put中即可;
private void getLogin() {
        LoadingDialogUtils.showDialog(this);
        String jsonHead="";
        Map<String,Object> mapHead=new HashMap<>();
        mapHead.put("mobile", mPhone);
        mapHead.put("loginPasswd", mPwd);
        mapHead.put("ver", VersionUpdateUtils.getVersionCode(BaseApplication.getContext())+"");

        jsonHead=buildRequestParams(mapHead);

        OkHttpUtils
                .postString()
                .url(CommonUrl.LOGIN)
                .mediaType(MediaType.parse("application/json; charset=utf-8"))
                .content(jsonHead)
                .build()
                .execute(new StringCallback() {

                    private VCode_Bean2 codeBean2;

                    @Override
                    public void onError(Call call, Exception e, int id) {
//                        ToastUtils.showMyToast(LoginActivity.this,ToastUtils.OPTION_FAIL,"登录失败"+e.getMessage());
                        LoadingDialogUtils.dissmisDialog();
                    }

                    @Override
                    public void onResponse(String response, int id) {
                        Log.e("TAG" , "登录返回信息:"+response) ;
                        
                });

    }
2>:对于第二种:比如请求一个接口,获取到 一个list集合,然后遍历 list集合,在for循环里边:

1>:随便定义一个 javabean对象,并且定义所有需要传递的字段;
2>:在最外层定义一个list集合,类型就是这个 javabean类型;
3>:把 这个javabean对象添加到集合中;
4>:然后使用之前给服务器传递json数据的方式,把单独的字段比如msg、code和list集合都按照之前传递方式一样就可以;

代码如下:
1>:请求一个接口,获取一个list集合,遍历list集合, 然后定义 一个 javabean对象,并且定义所有需要传递的字段,并且在最外层定义一个list集合,把 list遍历出来的所有数据全部设置给 javabean 的所有字段,然后把 这个 javabean对象添加到 list集合中

    // 在方法最外层定义的一个list集合,且类型就是这个 javabean 类型的 
    private List<C2SBean> c2SBeanList = new ArrayList<C2SBean>() ;

    /**
     *  请求一个接口,获取list集合数据
     */
    private void getBankListData() {

        String jsonHead="";
        Map<String,Object> mapHead=new HashMap<>();

        mapHead.put("userId", PrefUtils.getString(BankCardListActivity.this , "myId" , ""));
        mapHead.put("ver", VersionUpdateUtils.getVersionCode(BaseApplication.getContext())+"");
        mapHead.put("token", PrefUtils.getString(BaseApplication.getContext() , "myToken" , ""));

        jsonHead=buildRequestParams(mapHead);
        OkHttpUtils
                .postString()
                .url(CommonUrl.BANK_LIST)
                .mediaType(MediaType.parse("application/json; charset=utf-8"))
                .content(jsonHead)
                .build()
                .execute(new StringCallback() {

                    @Override
                    public void onError(Call call, Exception e, int id) {
               ToastUtils.showMyToast(BankCardListActivity.this,ToastUtils.OPTION_FAIL,"--"+e.getMessage());
                    }

                    @Override
                    public void onResponse(String response, int id) {
                        BankListBean bankListBean = new Gson().fromJson(response , BankListBean.class) ;
                        if (bankListBean != null){
                            if (!TextUtils.isEmpty(bankListBean.getCode()) && bankListBean.getCode().equals("0")) {
                                listDatas = bankListBean.getData();

                                if (listDatas != null && listDatas.size()>0){
                                    for (int i = 0; i < listDatas.size(); i++) {

                                        // TODO 用于测试给服务器传递数据
                                        // 1. 随便定义一个 javabean对象,并且定义所有需要传递的字段;
                                        // 2. 在最外层定义一个list集合,类型就是这个 javabean类型;
                                        // 3. 把 这个javabean对象添加到集合中;
                                        // 4. 然后使用之前给服务器传递json数据的方式,把单独的字段比如msg、code和list集合都按照之前传递方式一样就可以;
                                        /*C2SBean c2SBean = new C2SBean() ;
                                        c2SBean.setAcpToken(listDatas.get(i).getAcpToken());
                                        c2SBean.setAcpTrid(listDatas.get(i).getAcpTrid());
                                        c2SBean.setBin(listDatas.get(i).getBin());
                                        c2SBean.setId(listDatas.get(i).getId());
                                        c2SBean.setIsDeleted(listDatas.get(i).getIsDeleted());
                                        c2SBean.setIsEnabled(listDatas.get(i).getIsEnabled());
                                        c2SBean.setIsLatest(listDatas.get(i).getIsLatest());
                                        c2SBean.setRevId(listDatas.get(i).getRevId());
                                        c2SBean.setRevTime(listDatas.get(i).getRevTime());
                                        c2SBean.setUserId(listDatas.get(i).getUserId());
                                        c2SBean.setBankName(listDatas.get(i).getBankName());

                                        c2SBeanList.add(c2SBean) ;*/
                                    }
                                    /*testC2SBean(c2SBeanList) ;*/
                                }
                        }
                    }
                });
    }

2>:然后使用之前给服务器传递json数据的方式传递就可以:

/*************** 给服务器传递json数据中含有list集合,list集合中包含多个对象,
     * 数据格式和BankListBean一样 ************/
    private void testC2SBean(List<C2SBean> c2SBeanList) {
        String jsonHead="";
        Map<String,Object> mapHead=new HashMap<>();

        mapHead.put("msg", "查询成功");
        mapHead.put("code", "0");
        mapHead.put("list", c2SBeanList);

        jsonHead=buildRequestParams(mapHead);
        Log.e("TAG" , "jsonHead:"+jsonHead) ;
    }

3>:C2SBean对象如下:

/**
 * Created by Administrator on 2018/7/26.
 */

public class C2SBean {
    private String acpToken;
    private String acpTrid;
    private String bin;
    private int id;
    private int isDeleted;  // 0表示正常 1表示删除这张卡
    private int isEnabled;
    private int isLatest;
    private int revId;
    private long revTime;
    private String userId;

    private String bankName ;

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    private Bitmap bitmap ;

    public Bitmap getBitmap() {
        return bitmap;
    }

    public void setBitmap(Bitmap bitmap) {
        this.bitmap = bitmap;
    }

    public String getAcpToken() {
        return acpToken;
    }

    public void setAcpToken(String acpToken) {
        this.acpToken = acpToken;
    }

    public String getAcpTrid() {
        return acpTrid;
    }

    public void setAcpTrid(String acpTrid) {
        this.acpTrid = acpTrid;
    }

    public String getBin() {
        return bin;
    }

    public void setBin(String bin) {
        this.bin = bin;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(int isDeleted) {
        this.isDeleted = isDeleted;
    }

    public int getIsEnabled() {
        return isEnabled;
    }

    public void setIsEnabled(int isEnabled) {
        this.isEnabled = isEnabled;
    }

    public int getIsLatest() {
        return isLatest;
    }

    public void setIsLatest(int isLatest) {
        this.isLatest = isLatest;
    }

    public int getRevId() {
        return revId;
    }

    public void setRevId(int revId) {
        this.revId = revId;
    }

    public long getRevTime() {
        return revTime;
    }

    public void setRevTime(long revTime) {
        this.revTime = revTime;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容