今天在写项目的时候需要发起一个post请求,项目用了xutils3.0作为网络请求框架,post请求后台需要传递一条json字符串作为参数
根据以前的经验只要写
RequestParams requestParams=new RequestParams(); requestParams.addBodyParameter("json",paramJSON);
就可以实现了(额,什么鬼?第一次写博客复制一下代码这里竟然变成黑色背景了,算了不管了)
然而今天是第一次用3.0发现这样写不行,度了好多写法也没有什么卵用,最后各种实验发现如下方法:
RequestParams requestParams = new RequestParams("http://www.xxx.com"); requestParams.setAsJsonContent(true); requestParams.setBodyContent("{\"username\":\"test\",\"password\":\"test\"}");经测试可以,记录一下为遇到相同问题的小伙伴们提供参考
额额,有几位朋友私信我,因为大周末没有看博客,现在统一贴出完整步骤,实在不好意思啊~~~~~
xUtils3.0发送post请求传json参数完整步骤:
JSONObject js_request = new JSONObject();//服务器需要传参的json对象 js_request.put("key", value);//根据实际需求添加相应键值对 js_request.put("key1", value1); js_request.put("key2", value2); RequestParams params = new RequestParams("http://www.baidu.com"); params.setAsJsonContent(true); params.setBodyContent(js_request.toString()); x.http().post(params, new Callback.CacheCallback<String>() {//发起传参为json的post请求, // Callback.CacheCallback<String>的泛型为后台返回数据的类型, // 根据实际需求更改 @Override public boolean onCache(String result) { return false; } @Override public void onSuccess(String result) { //此处请求成功后的逻辑 } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } });