Android之Volley使用
来源:互联网 发布:java 免费开源crm系统 编辑:程序博客网 时间:2024/05/16 19:45
Volley使用demo:
public class MainActivity extends Activity { private RequestQueue mQueue; private TextView tv; private ImageView iv; private Button sr,btn2,btn3,btn4,btn5,btn6,btn7; private NetworkImageView netImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mQueue=Volley.newRequestQueue(getApplicationContext()); initView(); } private void initView() { // TODO Auto-generated method stub tv=(TextView) findViewById(R.id.tv_1); iv=(ImageView) findViewById(R.id.iv_1); sr=(Button) findViewById(R.id.btn_1); sr.setOnClickListener(new Listener()); btn2=(Button) findViewById(R.id.btn_2); btn2.setOnClickListener(new Listener()); btn3=(Button) findViewById(R.id.btn_3); btn3.setOnClickListener(new Listener()); btn4=(Button) findViewById(R.id.btn_4); btn4.setOnClickListener(new Listener()); btn5=(Button) findViewById(R.id.btn_5); btn5.setOnClickListener(new Listener()); btn6=(Button) findViewById(R.id.btn_6); btn6.setOnClickListener(new Listener()); btn7=(Button) findViewById(R.id.btn_7); btn7.setOnClickListener(new Listener()); netImageView=(NetworkImageView) findViewById(R.id.network_imageView); } class Listener implements OnClickListener{ @Override public void onClick(View v) { switch(v.getId()){ case R.id.btn_1: loadGetStr("http://www.baidu.com"); break; case R.id.btn_2: loadPostStr(""); break; case R.id.btn_3: loadGetJson("http://www.imooc.com/api/teacher?type=4&num=30"); break; case R.id.btn_4: networkImageViewUse(netImageView, "http://img.taopic.com/uploads/allimg/120331/2722-12033109302882.jpg"); break; case R.id.btn_5: loadeXMLRequest("http://flash.weather.com.cn/wmaps/xml/china.xml"); break; case R.id.btn_6: loadJsonResponse("http://www.weather.com.cn/data/sk/101010100.html"); break; case R.id.btn_7: getImageLoader(iv, "http://img.taopic.com/uploads/allimg/120331/2722-12033109302882.jpg"); break; } }} //返回String 网络请求Get方法 private void loadGetStr(String url){ StringRequest stringRequest=new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG", response); tv.setText(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub Log.d("TAG",error.getMessage()); tv.setText(error.getMessage()); } } ); //设置是否缓存 失败了,不明白为啥 stringRequest.setShouldCache(true); mQueue.add(stringRequest); mQueue.start(); } //返回string,网络请求Post private void loadPostStr(String url){ StringRequest stringRequest = new StringRequest(Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // TODO Auto-generated method stub } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("params1", "value1"); map.put("params2", "value2"); return map; } }; } //返回json 网络get请求 private void loadGetJson(String url){ JsonObjectRequest jr=new JsonObjectRequest(url,null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { tv.setText(response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub tv.setText(error.getMessage()); } }); mQueue.add(jr); mQueue.start(); } //newwork控件 请求图片 @SuppressWarnings("unused") private void networkImageViewUse(NetworkImageView iv, String url) { ImageLoader imLoader = new ImageLoader(mQueue, new BitmapCache()); //请求图片之前显示的图片 iv.setDefaultImageResId(R.drawable.ic_launcher); // 请求图片失败显示的图片 iv.setErrorImageResId(R.drawable.ic_launcher); iv.setImageUrl(url, imLoader); } //图片一级缓存处理 public class BitmapCache implements ImageCache { private LruCache<String, Bitmap> mCache; public BitmapCache() { int maxSize = 10 * 1024 * 1024; mCache = new LruCache<String, Bitmap>(maxSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); } } // XML private void loadeXMLRequest(String url){ XMLRequest xmlRequest=new XMLRequest(url, new Response.Listener<XmlPullParser>() { @Override public void onResponse(XmlPullParser response) { // TODO Auto-generated method stub try { int eventType = response.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_TAG: String nodeName = response.getName(); if ("city".equals(nodeName)) { String pName = response.getAttributeValue(0); Log.d("TAG", "pName is " + pName); tv.setText(pName); } break; } eventType = response.next(); } } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { tv.setText(error.getMessage()); } }); mQueue.add(xmlRequest); } //json @SuppressWarnings({ "unused", "unchecked" }) private void loadJsonResponse(String url){ GsonRequest<Weather> gsonRequest=new GsonRequest(url, Weather.class, new Response.Listener<Weather>() { @Override public void onResponse(Weather weather) { WeatherInfo weatherInfo=weather.getWeatherinfo(); Log.d("TAG", "city is " + weatherInfo.getCity()); Log.d("TAG", "temp is " + weatherInfo.getTemp()); Log.d("TAG", "time is " + weatherInfo.getTime()); tv.setText(weatherInfo.getCity()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub tv.setText(error.getMessage()); } }); mQueue.add(gsonRequest); } //ImageLoader 请求图片 private void getImageLoader(ImageView iv,String url){ ImageLoader il=new ImageLoader(mQueue, new BitmapCache()); ImageListener listener = ImageLoader.getImageListener(iv, R.drawable.ic_launcher, R.drawable.ic_launcher); il.get(url, listener, 200, 200); }}
GsonRequest集成:
import java.io.UnsupportedEncodingException;import com.android.volley.NetworkResponse;import com.android.volley.ParseError;import com.android.volley.Request;import com.android.volley.Response;import com.android.volley.Response.ErrorListener;import com.android.volley.Response.Listener;import com.android.volley.toolbox.HttpHeaderParser;import com.google.gson.Gson;public class GsonRequest<T> extends Request<T> { private final Listener<T> mListener; private Gson mGson; private Class<T> mClass; public GsonRequest(int method, String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) { super(method, url, errorListener); mGson = new Gson(); mClass = clazz; mListener = listener; } public GsonRequest(String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) { this(Method.GET, url, clazz, listener, errorListener); } @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(mGson.fromJson(jsonString, mClass), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(T response) { mListener.onResponse(response); } }
XMLRequest 集成:
import java.io.StringReader;import java.io.UnsupportedEncodingException;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import com.android.volley.NetworkResponse;import com.android.volley.ParseError;import com.android.volley.Request;import com.android.volley.Response;import com.android.volley.Response.ErrorListener;import com.android.volley.Response.Listener;import com.android.volley.toolbox.HttpHeaderParser;public class XMLRequest extends Request<XmlPullParser> { private final Listener<XmlPullParser> mListener; public XMLRequest(int method, String url, Listener<XmlPullParser> listener, ErrorListener errorListener) { super(method, url, errorListener); mListener = listener; } public XMLRequest(String url, Listener<XmlPullParser> listener, ErrorListener errorListener) { this(Method.GET, url, listener, errorListener); } @Override protected Response<XmlPullParser> parseNetworkResponse(NetworkResponse response) { try { String xmlString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = factory.newPullParser(); xmlPullParser.setInput(new StringReader(xmlString)); return Response.success(xmlPullParser, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (XmlPullParserException e) { return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(XmlPullParser response) { mListener.onResponse(response); } }
public class Weather { private WeatherInfo weatherinfo; public WeatherInfo getWeatherinfo() { return weatherinfo; } public void setWeatherinfo(WeatherInfo weatherinfo) { this.weatherinfo = weatherinfo; } class WeatherInfo { private String city; private String temp; private String time; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getTemp() { return temp; } public void setTemp(String temp) { this.temp = temp; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } } }
VolleyErrorHelper 集成
import java.util.HashMap; import java.util.Map; import android.content.Context; import com.android.volley.AuthFailureError; import com.android.volley.NetworkError; import com.android.volley.NetworkResponse; import com.android.volley.NoConnectionError; import com.android.volley.ServerError; import com.android.volley.TimeoutError; import com.android.volley.VolleyError; import com.csun.sos.R;import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class VolleyErrorHelper { /** * Returns appropriate message which is to be displayed to the user against * the specified error object. * * @param error * @param context * @return */ public static String getMessage(Object error, Context context) { if (error instanceof TimeoutError) { return context.getResources().getString( R.string.generic_server_down); } else if (isServerProblem(error)) { return handleServerError(error, context); } else if (isNetworkProblem(error)) { return context.getResources().getString(R.string.no_internet); } return context.getResources().getString(R.string.generic_error); } /** * Determines whether the error is related to network * * @param error * @return */ private static boolean isNetworkProblem(Object error) { return (error instanceof NetworkError) || (error instanceof NoConnectionError); } /** * Determines whether the error is related to server * * @param error * @return */ private static boolean isServerProblem(Object error) { return (error instanceof ServerError) || (error instanceof AuthFailureError); } /** * Handles the server error, tries to determine whether to show a stock * message or to show a message retrieved from the server. * * @param err * @param context * @return */ private static String handleServerError(Object err, Context context) { VolleyError error = (VolleyError) err; NetworkResponse response = error.networkResponse; if (response != null) { switch (response.statusCode) { case 404: case 422: case 401: try { // server might return error like this { "error": // "Some error occured" } // Use "Gson" to parse the result HashMap<String, String> result = new Gson().fromJson( new String(response.data), new TypeToken<Map<String, String>>() { }.getType()); if (result != null && result.containsKey("error")) { return result.get("error"); } } catch (Exception e) { e.printStackTrace(); } // invalid request return error.getMessage(); default: return context.getResources().getString( R.string.generic_server_down); } } return context.getResources().getString(R.string.generic_error); } }
Volley,Gson库
0 0
- Android之Volley使用
- Android之Volley的使用
- Android Volley使用之二:Volley请求网络图片
- android常见框架基本使用之-Volley
- Android网络之Volley的使用
- Android框架之volley的使用
- Android 之 Volley
- Android之Volley
- Android之Volley
- Android之Volley框架
- android开发之Volley
- Android|图形图像之Volley
- Volley使用之JsonObjectRequest
- Android,Volley使用介绍
- Android Volley框架使用
- android volley 使用
- android volley使用技巧
- Android Volley的使用
- MYSQL 服务无法启动 服务没有报告任何错误
- 深度学习(Deep Learning)读书思考六:循环神经网络一(RNN)
- HttpServletResponse对象.
- linux unit5
- Linux C语言中的read write lseek的使用
- Android之Volley使用
- 嵌入式学习要求
- 关于html5与jsp页面同样的html代码展示的页面效果不一样的问题
- linux unit6
- request对象的作用
- 快速幂
- 获取请求参数编码问题
- 翻转单词顺序
- 致运营新人:我们该怎么破局,才能追上老司机们的步伐