文档章节

volley JsonObjectRequest post请求

刘小米_思聪
 刘小米_思聪
发布于 2014/12/30 12:20
字数 446
阅读 10902
收藏 5

本文为作者原创,转载请注明出处,否则将依法追究版权

注意:使用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

© 著作权归作者所有

刘小米_思聪
粉丝 58
博文 60
码字总数 43955
作品 0
西安
其他
私信 提问
Android Volley学习

开发android应用很多时候都要涉及网络操作,Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图...

JeremyDai
2016/05/05
85
0
【Android】android Volley完全解析(一)

前言 Volley是一个由Google官方推出的网络通信库,它使得Android进行网络请求时更加方便、快速、健壮,同时对网络图片加载也提供了良好的支持。 不过HttpURLConnection和HttpClient的用法还是...

定陶黄公子
2016/12/13
300
0
Android Volley完全解析(一),初识Volley的基本用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482095 1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用...

mingxun
2014/04/18
207
0
[转]Volley的功能及设置

olley提供了优美的框架,使android程序网络访问更容易、更快。 Volley抽象实现了底层的HTTP Client库,我们不需关注HTTP Client细节,专注于写出更加漂亮、干净的RESTful HTTP请求。 Volley...

新年
2015/07/09
453
0
Android Volley框架的几种post提交请求方式

首先简单描述一下Google的Android开发团队在2013年推出的一个网络通信框架Volley.它的设计目标是进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如下载文件等,Volley的...

gaolu
2014/08/08
171
1

没有更多内容

加载失败,请刷新页面

加载更多

cleanLastUpdated.bat

@echo offrem create by AnXiaole rem 这里写你的仓库路径set REPOSITORY_PATH=C:\Users\AnXiaole\.m2\repositoryrem 正在搜索...for /f "delims=" %%i in ('dir /b /s "%REPO......

安小乐
6分钟前
1
0
操作放大器的用法是什么?

  有区别   1、单级放大的倍数比较有限,一般在100倍以下。放大倍数很大的话,负反馈就比较浅,对于放大倍数的稳定性不利。假如需要放大倍数更高,就不得不动用多级放大电路了。单级放大...

仙溪
8分钟前
2
0
c++ 上传文件 curl

bool uploadFile(std::string url, std::string file, std::string auth) { boost::filesystem::path p(file); CURL *curl; CURLcode res; struct curl_httppost *for......

青黑
14分钟前
2
0
冒泡与插入排序的代码实现

// 冒泡排序,a 表示数组,n 表示数组大小public void bubbleSort(int[] a, int n) { if (n <= 1) return; for (int i = 0; i < n; ++i) { // 提前退出冒泡循环的标志位 ...

无名氏的程序员
17分钟前
3
0
centos7.6 +mhvtl1.6安装

以前的mhvtl都是在centos6.x,5.x上安装的mhvtl以前版本为1.4,现在最新的1.6出来,可以安装在centos7.6上,下面是安装过程: 1.安装基础包 centos7.6只要能上外网,默认是配置了yun源的,这些...

突突突酱
19分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部