Java 凌空通过JSONobject作为参数POST方法
我正在使用Request类向我的服务器发出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
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类中,使用bodyrequest发出POST
请求。调用getBody()
方法,返回写入连接对象输出流的[]字节。
在api级别的HttpClientStack类中,该类是否扩展了Request
class?
HttpEntity entity = new ByteArrayEntity(request.getBody());
httpRequest.setEntity(entity);