Android使用Google推荐的联网框架Volley,让连接网络更加简单
httpclient和httpurlconnection,感觉是不是非常麻烦,而Google特别为开发人员考虑。推出了Volley。从此妈妈再也不操心我的联网问题了,哪里联不上联哪里,Volley让联网更easy和更快。而且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里面放一些server须要的參数
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.大功告成,是不是感觉非常easy。看完这些代码,你是不是也打算跟httpclient和httpurlconnection
say goodbye了跟Volley say hello那。最后祝愿安卓系统越做越好,让我们Android必胜宝刀行走在科技的世界里吧。Yeah~~~~
<uses-permission android:name="android.permission.INTERNET" >
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l1YW41MTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l1YW41MTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
Android使用Google推荐的联网框架Volley,让连接网络更加简单的更多相关文章
- Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、dhroid..
对于Android初学者以及对于我们菜鸟,这些大神们开发的轻量级框架非常有用(更别说开源的了). 下面转载这10个框架的介绍:(按顺序来吧没有什么排名). 一. Afinal 官方介绍: Afina ...
- android 连接网络的简单实例
1.android有两种连接网络的类HttpURLConnect和HttpClient,但是HttpClient已逐渐被HttpURLConnect类代替所以就不提及. 2.实例 String add ...
- Android 网络通信框架Volley简介(Google IO 2013)
1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...
- [转]Android 网络通信框架Volley简介(Google IO 2013)
Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v= ...
- 【转】Android 网络通信框架Volley简介(Google IO 2013)
Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v= ...
- Android开源框架Volley(Google IO 2013)源代码及内部实现分析
1.Volley概述 在项目开发过 程中,博主曾写过大量的访问网络重复代码,特别是ListView adapter很难避免getView()方法不被重复调用,如果ImageView不利用缓存机制,那么 ...
- Android开源框架——Volley
Volley 是 Google 在 2013 I/O 大会上推出的 Android 异步网络请求框架和图片加载框架.特别适合数据量小,通信频繁的网络操作.Volley 主要是通过两种 Diapatch ...
- Google推荐——Glide使用详解(图片加载框架)
零.前言 本文所使用的Glide版本为3.7.0 一.简介 Glide,一个被google所推荐的图片加载库,作者是bumptech.这个库被广泛运用在google的开源项目中,包括2014年的goo ...
- Android网络框架Volley
Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...
随机推荐
- Android应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8303098 在前文中,我们分析了应用程序窗口连 ...
- [jQuery] 自做 jQuery Plugin - Part 1
有時候寫 jQuery 時,常會發現一些簡單的效果可以重複利用.只是每次用 Copy & Paste 大法似乎不是件好事,有沒有什麼方法可以讓我們把這些效果用到其他地方呢? 沒錯,就是用 jQ ...
- NDK下 将Platinum SDK 编译成so库 (android - upnp)
Platinum UPnP SDK 是一个跨平台的C++库,利用该库,可以很容易就构建出DLNA/UPnP控制点(DLNA/UPnP Control Point)和DLNA/UPnP设备(DLNA/U ...
- NET基础课--NET中程序集0-1
程序集 1.表现形式:.dll 和. exe . 2.程序集组成:PE头,CLR头,清单,元数据,CIL代码,资源文件.实际上这些内容包含在一个叫做Module的逻辑结构中. 单模块程序集:程序集就 ...
- 影响布局的inline-block的空白符的问题
昨天切页面时,进行布局时,想改变以下方法换换口味,所以就抛弃了float方法,采用了display:inline-block方法,没想到却随之而来的带来了一个想不通的问题,那就是空白.废话不多说,上代 ...
- android学习---屏幕旋转
/** *问题:今天学习android访问Servlet,Servlet给返回一个xml格式的字符串,android得到数据后将其显示到一个TextView中,发现Activity得到数据显 * 示到 ...
- jquery mobile 入门
简介:jQuery Mobile框架可以轻松的帮助我们实现非常好看的.可跨设备的Web应用程序.我们将后续的介绍中向大家介绍大量的代码及实例. jQuery一直以来都是非常流行的富客户端及Web应用程 ...
- c++ iostream 相关使用
索引: C++的iostream标准库介绍+使用详解(转) iostream格式化输出 c++ 字符串流 sstream(常用于格式转换) 关于#include <iomanip>中iom ...
- 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
因为最近更新的PHP版本,写sql语句,忽然发现不能用了,上网查了一些原因,找到几个方法如下: 1.禁止php报错 display_errors = on 改成 display_errors = of ...
- PC远程调试移动设备(转载)
我们在移动端进行前端开发时,会遇到一个让人头痛但不得不面对的问题--调试. 在 PC 机器上,我们有功能强大的 Chrome DevTools.Firebug,即便是老版本的 IE ,我们也可以安装微 ...