我正在尝试使用 android 中的 Volley
库将一些 JsonObject
Post
到服务器。我怀疑 getparams
方法没有被调用并且我的数据没有被发布。任何人都可以一步一步地指导我哪里出错了。我的代码如下:
case R.id.bt_search:
try {
jObj.put("FromDate", "04-10-2014");
jObj.put("Todate", "04-11-2014");
jObj.put("BillNumber", bill);
jObj.put("Status", "NotClosed");
jObj.put("OrderType", "1,2,3" /* Ordertype */);
Log.i("json data on clicking search", "" + jObj);
makeJsonObjReq(jObj);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
private void makeJsonObjReq(final JSONObject jObj) {
// TODO Auto-generated method stub
RequestQueue rq = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
Method.POST,
"myurl",
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject arg0) {
// TODO Auto-generated method stub
Log.d("server Response", arg0.toString());
try {
for (int i = 0; i < arg0.length(); i++) {
}
} catch (Exception e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
VolleyLog.d("Error msg from server",
"Error: " + arg0.getMessage());
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
// TODO Auto-generated method stub
Map<String, String> params = new HashMap<String, String>();
params.put("data", jObj.toString());
//return params;
return super.getParams();
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
// TODO Auto-generated method stub
return super.getHeaders();
}
};
com.cashier.volley_helper.AppController.getInstance()
.addToRequestQueue(jsonObjReq);
rq.add(jsonObjReq);
};
最佳答案
你必须修改 getParams() 方法
private void makeJsonObjReq(final JSONObject jObj) {
// TODO Auto-generated method stub
RequestQueue rq = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
Method.POST,
"myurl",
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject arg0) {
// TODO Auto-generated method stub
Log.d("server Response", arg0.toString());
try {
for (int i = 0; i < arg0.length(); i++) {
}
} catch (Exception e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
VolleyLog.d("Error msg from server",
"Error: " + arg0.getMessage());
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
// TODO Auto-generated method stub
Map<String, String> params = super.getParams();
if( params==null)
params =new HashMap<String, String>();
params.put("data", jObj.toString());
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
// TODO Auto-generated method stub
return super.getHeaders();
}
};
com.cashier.volley_helper.AppController.getInstance()
.addToRequestQueue(jsonObjReq);
rq.add(jsonObjReq);
}
关于android - 在 Android 中使用 Volley 库时数据未发布到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732212/