今天在写项目的时候需要发起一个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() {
}
});