Android使用Google推荐的联网框架Volley,让连接网络更加简单
httpclient和httpurlconnection,感觉是不是非常麻烦,而Google特别为开发者考虑,推出了Volley,从此妈妈再也不担心我的联网问题了,哪里联不上联哪里,Volley让联网更容易和更快,并且Volley请求会异步执行,不阻挡主线程联网请求无非就是Get或者Post,我们很少用到DELETE这个请求方式,说了这么多废话,下面让我们看看Volley到底能干啥。它真的有这么神奇吗,芝麻开门,让我们一起来探索Volley 吧!
1、封装了的异步的RESTful 请求API;
2、一个优雅和稳健的请求队列;
3、一个可扩展的架构,它使开发人员能够实现自定义的请求和响应处理机制;
4、能够使用外部HTTP Client库;
5、缓存策略;
6、自定义的网络图像加载视图(NetworkImageView,ImageLoader等);
package com.zqy.myvolley; import java.util.HashMap; import java.util.Map; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.Request.Method; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; import android.app.Activity; public class MainActivity extends Activity implements OnClickListener { private RequestQueue mQueue; String url="http://www.baidu.com"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mQueue=Volley.newRequestQueue(this);<span style="color: rgb(51, 51, 51); font-family: 宋体; font-size: 14px; line-height: 28px;">创建一个RequestQueue对象。</span> initView(); } private void initView(){ final Button btnGet=(Button) findViewById(R.id.btn_get); final Button btnPost=(Button) findViewById(R.id.btn_post); btnGet.setOnClickListener(this); btnPost.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_get: initGet(); break; case R.id.btn_post: initPost(); break; default: break; } } private void initGet(){//Get请求 Method为GET mQueue.add(new StringRequest(Method.GET,url, new Listener<String>() { @Override public void onResponse(String arg0) { Toast.makeText(MainActivity.this, "Get请求成功", 2).show(); //成功,在这里写处理内容的代码 } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { Toast.makeText(MainActivity.this, "Get请求失败", 2).show(); //失败 } })); } private void initPost(){//Post请求 //这写你自己的内部类PostResquest。。。。Method改成POST mQueue.add(new PostResquest(Method.POST,url, new Listener<String>() { @Override public void onResponse(String arg0) { Toast.makeText(MainActivity.this, "Post请求成功", 2).show(); //成功,在这里写处理内容的代码 } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { Toast.makeText(MainActivity.this, "Post请求失败", 2).show(); //失败 } })); } //写个内部类,Post里面放一些服务器需要的参数 class PostResquest extends StringRequest { public PostResquest(int method, String url, Listener<String> listener, ErrorListener errorListener) { super(method, url, listener, errorListener); } protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<String, String>(); params.put("Name", "小源");//参数 params.put("Age",22+"");//参数 return params; } } }这就是联网的代码了,是不是特别简单,比httpclient和httpurlconnection简单很多,并且还是异步执行,根本无需Handler。让我们开发更便捷,更简单,更高效,在让我们看看XML里面的布局,里面我放了两个Button,一个执行Get方法,一个执行Post方法。如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:id="@+id/btn_get" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="28dp" android:text="Get请求" /> <Button android:id="@+id/btn_post" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btn_get" android:layout_below="@+id/btn_get" android:layout_marginTop="47dp" android:text="Post请求" /> </RelativeLayout>OK.大功告成,是不是感觉很简单,看完这些代码,你是不是也打算跟httpclient和httpurlconnection say goodbye了跟Volley say hello那。最后祝愿安卓系统越做越好,让我们Android必胜宝刀行走在科技的世界里吧,Yeah~~~~
<uses-permission android:name="android.permission.INTERNET" >
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。