volley使用 POST请求

在拜读网站各种关于volley的使用方法之后,我也开始自行测试其可行性。现将过程中遇到的问题一一展示,以防忘记,也希望对人有益
要使用volley请求数据,首先要创建一个requestQuene对象。
requestQuene是一个请求队列对象,该队列可以缓存所有的http请求,并且按照一些算法自动的发出这些请求。requestQuene的设计本来就是预防了高并发的,所以我们无需每个activity里面都创建一个请求队列。我个人是创建了一个MyApplication继承Application。在这里面创建队列,并给了一个静态的方法,返回值是队列对象。方便在其他界面直接获取。
public class myApplication extends Application {
    public static RequestQueue quene;
    @Override
    public void onCreate() {
        super.onCreate();
        quene= Volley.newRequestQueue(getApplicationContext());
    }
    public static RequestQueue getQuene(){
        return quene;
    }
}
一:StringRequest——GET
1.新建一个StringRequest对象,并发起请求,在这里我使用的是百度api的免费接口

2.把该请求添加到请求队列中

Header参数重写getHeaders方法,对应 connection.setRequestProperty("apikey",  "您自己的apikey");

String server = "http://apis.baidu.com/txapi/weixin/wxhot";
int num = 10;
String url = String.format("%s?num=%s", server, num);
Map<String, String> headerMap = new HashMap<String, String>();
headerMap.put("apikey", "bc4dc2c212be5c32ec45539ecc2a0280");
<pre name="code" class="html"> StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                Log.i(TAG,s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
		Log.i(TAG,s);
            }}){
            @Override 
           public Map<String, String> getHeaders() throws AuthFailureError {                
		Map<String, String> headerMap = new HashMap<String, String>();
        	headerMap.put("apikey", "bc4dc2c212be5c32ec45539ecc2a0280");
		return headerMap; 
           }
        };
<pre name="code" class="html">myApplication.getQuene().add(stringRequest);

 
 

二:StringRequest——POST

1.新建StringRequest请求

2.把请求添加到请求队列中

post请求与get请求稍有不同,在参数传递方面需要注意。不过volley也已经提供了getParams方法用于解决。本例中使用易源接口做测试,在百度api中尚未找到post请求(涉及到加密的一些东西,在源码中有展示)

private void Volley_StringRequest_post() {
        String url = "http://route.showapi.com/64-20";
        String showapi_sign = "90b2a0426cc040258907aaf7aaba3e2f";
        Map<String, String> map = new HashMap<String, String>();
        map.put("showapi_appid", "11032");
        map.put("showapi_timestamp", "" + System.currentTimeMillis());
        map.put("showapi_sign_method", "md5");
        String sign = CommUtil.createSign(map, showapi_sign);
        map.put("showapi_sign", sign);
        <pre name="code" class="html">        StringRequest stringRequest=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                Log.i(TAG,s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.i(TAG,volleyError.toString);
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return map;
            }
        };
        myApplication.getQuene().add(stringRequest);

}
 

三:JsonObjectRequest——GET

这个基本上和上面的方法类似,不细说,直接上代码

String server = "http://apis.baidu.com/txapi/weixin/wxhot";
int num = 10;
String url = String.format("%s?num=%s", server, num);
Map<String, String> map = new HashMap<String, String>();
map.put("apikey", "bc4dc2c212be5c32ec45539ecc2a0280");
<pre name="code" class="html">JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                Log.i(TAG,jsonObject.toString);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.i(TAG,volleyError.toString);
            }
        }){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                if (map==null){
                    return null;
                }else{
                    return map;
                }
            }
        };
        myApplication.getQuene().add(jsonObjectRequest);

 四:JsonObjectRequest——POST 

jsonObjectRequest的post方法,坑比较多,碰巧该进的我都进了,在网上也找了各种解决方案,终于功夫不负有心人,找到一篇,同样将链接安利给各位

点击打开链接我的代码中也是使用作者的方法,我就不再这里粘贴了


我对方法进行了抽解,可以在activity中直接调用抽解方法进行操作,下载地址如下






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值