Volley之post传输

1.客户端以普通的post方式进行提交,服务端返回字符串

RequestQueue requestQueue =Volley.newRequestQueue(this);

StringRequest stringRequest=new StringRequest(Request.Method.POST,httpurl,

new Response.Listener<String>(){

@Override

public void onResponse(String response){

System.out.println("response="+response);

//已经获取了数据

}

},new Response.ErrorListener(){

@Override

public void onErrorResponse(VolletError error){

System.out.println("sorry,Error");

}

}){

@Override

protected Map<String,String> getParams(){

Map<String,String> map=new HashMap<String,String>();

map.put("name","value");

return params;

}};

requestQueue.add(stringRequest);

2.客户端以json串的post请求方式进行提交,服务端返回json串

RequestQueue requestQueue =Volley.newRequestQueue(this);

Map<String,String> map=new HashMao<String,String>();

map.put("name1","value1");

map.put("name2","value2");

JSONObject jsonObject=new JSONObject(params);

JsonRequest<JSONObject> jsonRequest=new JsonObjectRequest(Method.POST,httpurl,jsonObject,

new Response.Listener<JSONObject>(){

@Override

public void onResponse(JSONObject response){

System.out.println("response="+response.toString());

}

},new Response.ErrorListener(){

@Override

public void onErrorResponse(VooleyError error){

System.out.println("sorry,Error");

}

}){

//注意此处override的getParams()方法,在此处设置post需要提交的参数根本不起作用

    //必须象上面那样,构成JSONObject当做实参传入JsonObjectRequest对象里

    //所以这个方法在此处是不需要的

//    @Override

//    protected Map<String, String> getParams() {                

//          Map<String, String> map = new HashMap<String, String>();  

//            map.put("name1", "value1");  

//            map.put("name2", "value2");  

                

//        return params;

//    }

@Override

public Map<String,String> getHeaders(){

HashMap<String,String> headers=new HashMap<String,String>();

headers.put("Accept","application/json");

headers.put("Content-type","application/json;chaset=UTF-8");

return headers;

}

};

requestQueue.add(jsonRequest);

3.客户端以普通的post方式进行提交,服务端返回json串

首先在Activity类里,集成Request实现一个NormalPostRequest类

priavte class NormalPostRequest(String url,Listener<JSONObject> listener,

ErorListener errorListener,Map<String,String> map){

super(Request.Mthod.POST,url,errorListener);

mListener=listener;

mMap=map;

}

//mMap是已经按照前面的方式,设置了参数的实例

@Override

protected Map<String,String> getParams() throws AuthFailureError{

return mMap;

}

@Override

protected Response<JSONObject> parseNetworkResponse(NewworkResponse response){

try{

String jsonString=new String(response.data,HttpHeaderParse.parseCharset(response.headers));

return Response.success(ne JSONObject(josnString),HttpHeaderParser.parseCacheHeaders(response));

}catch(UnsupportedEncodingException e){

return Response.error(new ParseError(e));

}catch(JSONException je){

return Response.error(new ParseError(je));

}

}@Override

protected void deliverResponse(JSONObject response){

mListener.onResponse(response);

}

}

接下来的调用方式和前面差不多,生成一个Request实例,加入列队中即可

RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContexe());

Request<JSONObject> request=new NormalPostRequest(httpurl,

new Response.Listener<JSONObject>(){

@Override

public void onResponse(JSONObject  response){

System.out.println("response="+response.toString());

}

},new Response.ErrorListener(){

@Override

public void onResponse(VolleyError error){

Log.e("TAG",error.getMessage(),error);

}

},params);

requestQueue.add(request);

时间: 2024-08-26 13:45:52

Volley之post传输的相关文章

Android训练课程(Android Training) - 使用Volley传输网络数据(Transmitting Network Data Using Volley)

Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Volley is available through the open AOSP repository. Volley offers the following benefits: Automatic scheduling of network requests. Multiple concu

Android Volley入门到精通:定制自己的Request

经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest.JsonRequest.ImageRequest等.其中StringRequest用于请求一条普通的文本数据,JsonRequest(JsonObjectRequest.JsonArrayRequest)用于请求一条JSON格式的数据,ImageRequest则是用于请求网络上的一张图片. 可是Volley提供给我们的Request类型就只有这么多,而我们都知道,在网络上传输的数据通常

Android应用中网络请求库Volley的介绍

Volley 是一个HTTP的库,使用它能让Android应用网络传输的操作更加轻松,快捷.Volley的代码是托管在Android 源代码树下的一个工程,编译出来后是一个volley.jar文件.以下是Volley的特点 自动调度在代码中提交的网络请求(http) 多个网络请求的并发执行 对用户透明的磁盘或内存的缓存机制(本质是Http缓存机制) 能够支持网络请求的优先级 能在代码中,必要时轻松的取消网络请求(如activity销毁时),可以取消指定tag的网络请求,或按某种机制分类的网络请求

Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比

比较的指标: 1.cpu 2.流量 3.电量 4.内存占用 5.联网时间 功能点: 1.重试机制 2.提供的扩展功能 3.易用性 4.是否https 5.是否支持reflect api,OkHttp有配套方法 6.缓存.重试 7.cookie支持session  id会话支持 8.弱网性能和稳定性 9.超时时间,几种超时时间   连接超时,响应超时 10.适配各种机型.4.4和之前版本  2.3  4.1 5.0 4种网络连接方式提供的功能对比表格: 缓存 重试 Https/Http 稳定性 C

Volley 源码解析(转)

项目:Volley,分析者:grumoon,校对者:Trinea 本文为 Android 开源项目源码解析 中 Volley 部分项目地址:Volley,分析的版本:35ce778,Demo 地址:Volley Demo分析者:grumoon,校对者:huxian99.Trinea,校对状态:完成 1. 功能介绍 1.1. Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布. 名字由来:a burs

Volley框架源码分析

Volley框架分析Github链接 Volley框架分析 Volley源码解析 为了学习Volley的网络框架,我在AS中将Volley代码重新撸了一遍,感觉这种照抄代码也是一种挺好的学习方式.再分析Volley源码之前,我们先考虑一下,如果我们自己要设计一个网络请求框架,需要实现哪些事情,有哪些注意事项? 我的总结如下: 需要抽象出request请求类(包括url, params, method等),抽象出request请求类之后,我们可以对其继承从而实现丰富的扩展功能. 需要抽象出resp

Volley框架的优缺点--&gt;

优点: 1.默认Android2.3及以上基于HttpURLConnection,2.3及以下基于HttpClient; 2.符合Http缓存语义的缓存机制(提供了默认的磁盘和内存等缓存); 3.请求队列的优先级排序; 4.提供多样的取消机制; 5.提供简便的图片加载工具; 6.一个优秀的框架. 不足: 它只适合数据量小,通信频繁的网络操作,如果是数据量大的,像音频,视频等的传输,还是不要使用Volley为好.

Android开源框架——Volley

Volley 是 Google 在 2013 I/O 大会上推出的 Android 异步网络请求框架和图片加载框架.特别适合数据量小,通信频繁的网络操作.Volley 主要是通过两种 Diapatch Thread 不断从 RequestQueue 中取出请求,根据是否已缓存调用 Cache 或 Network 这两类数据获取接口之一,从内存缓存或是服务器取得请求的数据,然后交由 ResponseDelivery 去做结果分发及回调处理. 原文链接:http://blog.csdn.net/zi

Volley 源码解析&lt;转&gt;

Volley 源码解析 1. 功能介绍 1.1. Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布. 名字由来:a burst or emission of many things or a large amount at once发布演讲时候的配图 从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量小,通信频繁的网络操作.(个人认为 Android 应用中绝大多数的网