今天在寫項目的時候需要發起一個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() {
}
});