android下载网络数据的几种方法
2016-02-12 21:25
731 查看
本文实现按钮点击下载网页数据在Textview显示
<一> Xutils的使用,君子生非异也,善假于物也。良好的框架有时使我们的工作效率事半功倍,也会减少许多不必要的麻烦。xUtils
包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8)
<二>OkHttp使用,需要导入 okhttp和okio
的jar包。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。OkHttp
处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。使用
OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。
<三> volley 需要导入volley 的jar包。
Volley是Goole在2013年Google I/O大会上推出了一个新的网络通信框架,它是开源的。从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量小,通信频繁的网络操作。(个人认为 Android 应用中绝大多数的网络操作都属于这种类型)。
Volley加载图片实现了两级缓存(网络缓存、文件缓存),没有实现内存的缓存。Volley已经把各种异步任务、图片采样都封装好了。内存缓存使用lrucache类实现,需要我们手动添加进去。没有使用软引用缓存。因为4.0之后的android系统已经不推荐使用软引用缓存了。
此处会出现中文乱码,解决方案需要重写类StringRequest
本文实现按钮点击下载网页数据在Textview显示
<一> Xutils的使用,君子生非异也,善假于物也。良好的框架有时使我们的工作效率事半功倍,也会减少许多不必要的麻烦。xUtils
包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8)
<二>OkHttp使用,需要导入 okhttp和okio
的jar包。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。OkHttp
处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。使用
OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。
<三> volley 需要导入volley 的jar包。
Volley是Goole在2013年Google I/O大会上推出了一个新的网络通信框架,它是开源的。从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量小,通信频繁的网络操作。(个人认为 Android 应用中绝大多数的网络操作都属于这种类型)。
Volley加载图片实现了两级缓存(网络缓存、文件缓存),没有实现内存的缓存。Volley已经把各种异步任务、图片采样都封装好了。内存缓存使用lrucache类实现,需要我们手动添加进去。没有使用软引用缓存。因为4.0之后的android系统已经不推荐使用软引用缓存了。
此处会出现中文乱码,解决方案需要重写类StringRequest
<一> Xutils的使用,君子生非异也,善假于物也。良好的框架有时使我们的工作效率事半功倍,也会减少许多不必要的麻烦。xUtils
包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8)
private TextView tv; private Button button; HttpUtils httpUtils; String path ="http://www.huxiu.com/article/139078/1.html?f=index_feed_article"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); button.setOnClickListener(this); } private void assignViews() { tv = (TextView) findViewById(R.id.image); button = (Button) findViewById(R.id.button); httpUtils = new HttpUtils(); } //此处为下载数据,需要导入xutils.jar包 @Override public void onClick(View v) { httpUtils.send(HttpRequest.HttpMethod.GET, path, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { String tt = responseInfo.result; tv.setText(tt); } @Override public void onFailure(HttpException e, String s) { } }); }
<二>OkHttp使用,需要导入 okhttp和okio
的jar包。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。OkHttp
处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。使用
OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。
private TextView tv; private Button button; OkHttpClient client ; String path = "http://www.huxiu.com/article/139078/1.html?f=index_feed_article"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { runString(path); } catch (IOException e) { e.printStackTrace(); } } }); } private void assignViews() { client = new OkHttpClient(); tv = (TextView) findViewById(R.id.image); button = (Button) findViewById(R.id.button); } public void runString(String url) throws IOException { Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String ss = response.body().string(); // 在主线程更新ui runOnUiThread(new Runnable() { @Override public void run() { tv.setText(ss); } }); } }); }
<三> volley 需要导入volley 的jar包。
Volley是Goole在2013年Google I/O大会上推出了一个新的网络通信框架,它是开源的。从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量小,通信频繁的网络操作。(个人认为 Android 应用中绝大多数的网络操作都属于这种类型)。
Volley加载图片实现了两级缓存(网络缓存、文件缓存),没有实现内存的缓存。Volley已经把各种异步任务、图片采样都封装好了。内存缓存使用lrucache类实现,需要我们手动添加进去。没有使用软引用缓存。因为4.0之后的android系统已经不推荐使用软引用缓存了。
private TextView tv; private Button button; RequestQueue requestQueue; String path = "http://www.huxiu.com/article/139078/1.html?f=index_feed_article"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { downLoadStr(); } }); } public void downLoadStr(){ StringRequest stringRequest = new StringRequest(path, new Response.Listener<String>() { @Override public void onResponse(String s) { tv.setText(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); requestQueue.add(stringRequest); } private void assignViews() { requestQueue = Volley.newRequestQueue(getApplicationContext()); tv = (TextView) findViewById(R.id.image); button = (Button) findViewById(R.id.button); }
此处会出现中文乱码,解决方案需要重写类StringRequest
本文实现按钮点击下载网页数据在Textview显示
<一> Xutils的使用,君子生非异也,善假于物也。良好的框架有时使我们的工作效率事半功倍,也会减少许多不必要的麻烦。xUtils
包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8)
private TextView tv; private Button button; HttpUtils httpUtils; String path ="http://www.huxiu.com/article/139078/1.html?f=index_feed_article"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); button.setOnClickListener(this); } private void assignViews() { tv = (TextView) findViewById(R.id.image); button = (Button) findViewById(R.id.button); httpUtils = new HttpUtils(); } //此处为下载数据,需要导入xutils.jar包 @Override public void onClick(View v) { httpUtils.send(HttpRequest.HttpMethod.GET, path, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { String tt = responseInfo.result; tv.setText(tt); } @Override public void onFailure(HttpException e, String s) { } }); }
<二>OkHttp使用,需要导入 okhttp和okio
的jar包。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。OkHttp
处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。使用
OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。
private TextView tv; private Button button; OkHttpClient client ; String path = "http://www.huxiu.com/article/139078/1.html?f=index_feed_article"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { runString(path); } catch (IOException e) { e.printStackTrace(); } } }); } private void assignViews() { client = new OkHttpClient(); tv = (TextView) findViewById(R.id.image); button = (Button) findViewById(R.id.button); } public void runString(String url) throws IOException { Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String ss = response.body().string(); // 在主线程更新ui runOnUiThread(new Runnable() { @Override public void run() { tv.setText(ss); } }); } }); }
<三> volley 需要导入volley 的jar包。
Volley是Goole在2013年Google I/O大会上推出了一个新的网络通信框架,它是开源的。从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量小,通信频繁的网络操作。(个人认为 Android 应用中绝大多数的网络操作都属于这种类型)。
Volley加载图片实现了两级缓存(网络缓存、文件缓存),没有实现内存的缓存。Volley已经把各种异步任务、图片采样都封装好了。内存缓存使用lrucache类实现,需要我们手动添加进去。没有使用软引用缓存。因为4.0之后的android系统已经不推荐使用软引用缓存了。
private TextView tv; private Button button; RequestQueue requestQueue; String path = "http://www.huxiu.com/article/139078/1.html?f=index_feed_article"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assignViews(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { downLoadStr(); } }); } public void downLoadStr(){ StringRequest stringRequest = new StringRequest(path, new Response.Listener<String>() { @Override public void onResponse(String s) { tv.setText(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); requestQueue.add(stringRequest); } private void assignViews() { requestQueue = Volley.newRequestQueue(getApplicationContext()); tv = (TextView) findViewById(R.id.image); button = (Button) findViewById(R.id.button); }
此处会出现中文乱码,解决方案需要重写类StringRequest
相关文章推荐
- Netroid:强大、快速、易用、可扩展基于Volley实现的Android Http库
- Android Volley运用
- 收藏各种技术源码
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(三),定制自己的Request
- Android Volley完全解析(四),带你从源码的角度理解Volley
- android listview 异步加载图片并防止错位
- Android 网络通信框架Volley简介
- 网络状态判断并且跳到设置页面
- Volley的unit test
- http缓存
- android通过okhttp访问自签名https网站(单向)
- android快速开发开源项目android-common-utils
- Volley的应用(通过Json与服务器交互)
- Android 网络监听
- Android Volley解析,初识Volley的基本用法
- android开发:对Volley进行二次封装
- Volley请求源码解读 (1) ---无缓存请求
- Android Volley学习