标签:
注意:使用JsonObjectRequest或继承自JsonObjectRequest类的对象提交一个post请求,如果有参数需要提交,就必须以JSONObject的json串方式提交.否则通过重写getParams()方法的方式提交不管用,getParams()方法中提交post参数只适用于Request对象。
直接上代码:第一部分是调用,第二部分是自定义JsonObjectRequestWithCookie
private void uploadUserOp(String opType, String musicKey) throws AuthFailureError { Log.w("LOG","invoke uploadUserOp with "+ opType+" and "+musicKey); HashMap<String, String> opMap = new HashMap<String, String>(); opMap.put("op", opType); opMap.put("key", musicKey); JSONObject opJsonObject = new JSONObject(opMap); JsonObjectRequestWithCookie jsonObjectRequestWithCookie = new JsonObjectRequestWithCookie(Constants.USER_HISTORY_URL,opJsonObject, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { Log.w("LOG","get response jsonObject from post user history"+jsonObject.toString()); try { if(jsonObject.getString("status").equals("success")){ Log.w("LOG", "post /api/use/history/ success"); } else{ Log.w("LOG", "post /api/use/history/ failure"); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.w("LOG", "操作失败"); } },opMap); jsonObjectRequestWithCookie.setCookie(localCookie); RequestManager.getRequestQueue().add(jsonObjectRequestWithCookie); }
import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.toolbox.JsonObjectRequest; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; /** * Created by lsc on 2014/12/24. */ public class JsonObjectRequestWithCookie extends JsonObjectRequest { private Map<String, String> mHeaders = new HashMap<>(); public JsonObjectRequestWithCookie(String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener,Map<String,String> map) { super(Request.Method.POST, url, jsonRequest, listener, errorListener); } public JsonObjectRequestWithCookie(String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener){ super(url, jsonRequest, listener, errorListener); } //拿到客户端发起的http请求的Header @Override public Map<String, String> getHeaders() throws AuthFailureError { return mHeaders; } //发送请求时,往Header中添加cookie,可以一并发送 public void setCookie(String cookie) throws AuthFailureError { mHeaders.put("User-Agent", "Android:1.0:2009chenqc@163.com"); mHeaders.put("Cookie",cookie); } }
更多类型的post解释,可参见:http://www.open-open.com/lib/view/open1407727047207.html
标签:
原文地址:http://my.oschina.net/liusicong/blog/362215