Android Volley Post with Map <string,object =“”> params(?)</string,>

时间:2014-04-23 17:22:29

标签: android android-volley

我一直在尝试将我的Credentials课程从Android发布到C#.Net网络服务器。

Volley Post方法接受如下的参数:

@Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return parameters;
    }

getParams()的返回类型为Map<String, String>,但我需要Map<String, Object>将我的课程发送到网络服务器。我甚至试图将我的类转换为json字符串,如:

@Override
    protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> parameters = new HashMap<String, String>();
        parameters.put("credentials", new Gson().toJson(mCredentials, Credentials.class));
        return parameters;
    }

但它不起作用。服务器返回“无效参数”错误,该错误在“credentials”参数为空时引发。

服务器端没有任何问题,因为我可以使用AsyncTask进行操作。我决定将我的请求变成Volley,我就遇到了这个问题。

有人有解决方案吗?

2 个答案:

答案 0 :(得分:0)

我就是这样做的(注意:params是一个jsonobject,而不是地图):

 //fill params
 JSONObject params = new JSONObject();
 params.put("username", username);
 params.put("password", password);

 //create future request object
 RequestFuture<JSONObject> future = RequestFuture.newFuture();
 //create JsonObjectRequest
 JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, URL, params, future, future);
 //add request to volley
 MyVolley.getRequestQueue().add(jsObjRequest);
 //pop request off when needed
 try {
            JSONObject response = future.get();//blocking code
            } catch (Exception e) {
            e.printStackTrace();
     }

答案 1 :(得分:0)

如果您需要让您的包发送类似对象的内容,您可以将JSONObject放在JSONObject中。例如

JSONObject outer = new JSONObject();
JSONObject inner = new JSONObject();
inner.put("first_name","James");
inner.put("last_name","Bond");
outer.put("person",inner);
outer.put("id","1");