今天在做客户端与服务器之间通过Volly的POST传递数据时遇到了一个问题,现在将他记载下来,加深自己的印象,希望自己以后遇到问题可以这样去分析问题。
我们知道Volly提供了很简单的方法就能够去网络获取数据,我们这里只讨论POST方法,下面上代码:
/**
* post网络请求
*/
public static void sendHttprequest(Context context, String url,final Map mapmap) {
//首先获取请求队列
RequestQueue requestQueue = Volley.newRequestQueue(context);
//new出一个StringRequest的普通POST请求
StringRequest stringRequest = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() {
//成功方法以及失败方法
@Override
public void onResponse(String s) {
Log.d("tgp",s.toString());
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.d("haha", volleyError.toString());
}
})
//通过重写父类的getParams()来给拿到请求体,也就是我们要提交给父类的数据
{
protected Map<String, String> getParams() throws AuthFailureError{
return mapmap;
}
};
//将请求添加到请求队列中
requestQueue.add(stringRequest);
}
以上代码十分简单,基本所有其他工具的用法也差不多。因为服务器返回给我的是json格式的数据,所以我就想试试JSONObjectRequest去服务器上获取数据。也跟上面的方法类似:
//跟上面基本相同的注释我就不写了
public static void sendJsonprequest(Context context, String url,final Map mapmap) {
RequestQueue requestQueue = Volley.newRequestQueue(context);
//此处的第三个参数就是请求体,需要post提交的数据,但是我们先置为空,我们先通过和StringRequest方法一样重写getParams()能否成功
JSONObjectRequest objectRequest = new JSONObjectRequest(Request.Method.POST,url,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject s) {
Log.d("tgp",s.getString("Submit_status").toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.d("haha", volleyError.toString());
}
})
//重写getParams()
{
pro