Java 凌空通过JSONobject作为参数POST方法

Java 凌空通过JSONobject作为参数POST方法,java,android,android-volley,Java,Android,Android Volley,我正在使用Request类向我的服务器发出POST请求。我必须随此发送一些参数。所以我就是这样做的 private final Listener<String> mListener; private Map<String, String> mParams = new HashMap<String, String>(); public ChangePwdRequest(int method, String username, String currentPwd

我正在使用Request类向我的服务器发出POST请求。我必须随此发送一些参数。所以我就是这样做的

private final Listener<String> mListener;
private Map<String, String> mParams = new HashMap<String, String>();

public ChangePwdRequest(int method, String username, String currentPwd,
        String newPwd, Listener<String> mListener, ErrorListener listener) {
    super(Method.POST, Utilites.CHANGEPWD_REQUEST_URL,listener);
    mParams.put("user_id", username);
    mParams.put("current_password", currentPwd);
    mParams.put("new_password", newPwd);
    this.mListener = mListener;
}

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

@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {

    Gson mGson = new Gson();
    String jsonString = new String(response.data);
    ChangePwdResponse cateResponse = mGson.fromJson(jsonString,
            ChangePwdResponse.class);
    return Response.success(cateResponse.result, getCacheEntry());
}

@Override
protected void deliverResponse(String response) {
    mListener.onResponse(response);
}
私人最终监听器;
私有映射mParams=newhashmap();
公共ChangePwdRequest(int方法、字符串用户名、字符串currentPwd、,
字符串newPwd、侦听器mListener、ErrorListener(侦听器){
super(Method.POST、Utilites.CHANGEPWD\u请求\u URL、侦听器);
mParams.put(“用户id”,用户名);
mParams.put(“当前密码”,currentPwd);
mParams.put(“新密码”,newPwd);
this.mListener=mListener;
}
@凌驾
受保护的映射getParams()引发AuthFailureError{
返回内存;
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
Gson mGson=新的Gson();
String jsonString=新字符串(response.data);
ChangePwdResponse catesponse=mGson.fromJson(jsonString,
ChangePwdResponse.class);
返回Response.success(catesponse.result,getCacheEntry());
}
@凌驾
受保护的void deliverResponse(字符串响应){
mListener.onResponse(response);
}
我正在从服务器获得响应。它工作得很好。但是,如果我想发送一些JSONdata到我的Post呼叫,那么我应该使用。对吧?

我的问题是 1.因为Request是所有请求的基类,所以可以在这里用Json发送参数吗?
2.当我们在上面的代码段中使用map发送参数时,它是否会在后面的字符串中追加?

答案1。使用请求类,您可以直接重写
Map getParams()
方法,并在hashmap中为post请求设置参数。要设置JsonObject,您可能需要重写getBody(),以返回
jsonObj.toString().getBytes(“utf-8”)
。但是我建议您按照规则使用
JsonObjectRequest
class或
StringObjectRequest
class

答复2。它将其转换为编码字符串,将其转换为字节数组,然后打开一个连接对象,并将字节数组写入该连接对象的输出流,或者在HttpRequest对象中设置实体

挖掘截击源代码 在api级别=>9的Hurstack类中,使用body
request发出
POST
请求。调用getBody()
方法,返回写入连接对象输出流的
[]字节。

在api级别的HttpClientStack类中,该类是否扩展了
Request
class?
 HttpEntity entity = new ByteArrayEntity(request.getBody());
 httpRequest.setEntity(entity);