okHttp请求raw格式( 序列化的JSON字符串)

经常有的时候接口传参数的方式是个json串 也叫raw格式 那应该怎么传怎么封装呢
代码如下:这个方法同样放在我上一篇文章提到的 简单封装 okHttp 请求和回调
中的HttpUtil 里即可 url就是你的接口地址 这里重点讲一下json

// raw格式 序列化的JSON字符串  直接传json串
    public int doPostTask(String url, String json, final int markId){
//        String sessionId = ApiUrl.ADMIN_TOKEN ;
        String sessionId =  SPUtils.getPrefString(context,"Admin-Token");
        httpUtil.doPostTask2(url,sessionId,json,new HttpUtil.HttpCallback<JSONObject>(){

            @Override
            public JSONObject process(String data) {

                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(data);
                    code = jsonObject.getInt("code");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                if(code == 500){
                    Log.e("TAG", "code == "+code);
                    mHttpCallbackListener.onHttpPost(data,500);
                }else{
                    // 接口回调 去解析
                    mHttpCallbackListener.onHttpPost(data,markId);
                }
                return null;
            }

            @Override
            public void onException(int type) {

            }

            @Override
            public void postProcess(JSONObject result) {

            }
        });
        return code ;
    }
    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    private Request createPostRequest2(String url, String sessionId,String json)
    {
        RequestBody formBody = RequestBody.create(JSON, json);
        Request request = new Request.Builder()
                .url(url)
//                .header(KEY_COOKIE, SESSIONID_PREFIX + sessionId)
                .header(ADMIN_TOKEN, sessionId)
                //.addHeader(KEY_ACCEPT, TYPE_JSON)
                .post(formBody)
                .build();

        return request;
    }

json参数:
说白了 json 就是个字符串 把请求参数拼接起来
例如:JSONObject jsonObject=new JSONObject();
jsonObject.put(“Id”,7);
jsonObject.put(“name”,name);
String json = jsonObject.toString(); // 得到这个json 用上面那个方法就可以请求啦 类似于get拼接 但还是有区别
同样可以用一个自定义Ben对象 对这个对象赋值以后生成json
例如:
User user = new User;
user .setId =1 ;
user .name= “怪咖” ;
Gson gson = new Gson();
String json =gson .toJson(user);// 同样可以得到json 一旦参数很多的时候 用对象是很方便的
接下来同样封装一个公共方法同样放在上一篇文章提到的CoreHttpHelper
同样用自定义接口把参数返回给调用者去解析 详情看我上一篇文章简单封装 okHttp 请求和回调

// raw格式 序列化的JSON字符串  直接传json串
    public int doPostTask2(String url, String json, final int markId){
//        String sessionId = ApiUrl.ADMIN_TOKEN ;
        String sessionId =  SPUtils.getPrefString(context,"Admin-Token");
        httpUtil.doPostTask2(url,sessionId,json,new HttpUtil.HttpCallback<JSONObject>(){

            @Override
            public JSONObject process(String data) {

                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(data);
                    code = jsonObject.getInt("code");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                if(code == 500){
                    Log.e("TAG", "code == "+code);
                    mHttpCallbackListener.onHttpPost(data,500);
                }else{
                    // 接口回调 去解析
                    mHttpCallbackListener.onHttpPost(data,markId);
                }
                return null;
            }

            @Override
            public void onException(int type) {

            }

            @Override
            public void postProcess(JSONObject result) {

            }
        });
        return code ;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值