android下载网络数据的几种方法
来源:互联网 发布:跟兄弟连学php老版视频 编辑:程序博客网 时间:2024/06/14 11:22
本文实现按钮点击下载网页数据在Textview显示
<一> Xutils的使用,君子生非异也,善假于物也。良好的框架有时使我们的工作效率事半功倍,也会减少许多不必要的麻烦。xUtils 包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8)private TextView tv;<二>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 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) {
}
});
}
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;此处会出现中文乱码,解决方案需要重写类StringRequest
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);
}
本文实现按钮点击下载网页数据在Textview显示
<一> Xutils的使用,君子生非异也,善假于物也。良好的框架有时使我们的工作效率事半功倍,也会减少许多不必要的麻烦。xUtils 包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8)private TextView tv;<二>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 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) {
}
});
}
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;此处会出现中文乱码,解决方案需要重写类StringRequest
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);
}
0 0
- android下载网络数据的几种方法
- iPhone开发下载网络数据的几种方法总结
- android 网络判断的几种方法
- Android-存储数据的几种方法
- 内表数据下载到EXCEL的几种方法
- 从网络获取数据的几种方法
- android开发网络请求的几种方法
- android webview下载附件几种方法
- Android中数据存储的几种方法
- Android中数据存储的几种方法
- Android activity之间传递数据的几种方法
- Android中数据存储的几种方法
- Android从服务器端获取数据的几种方法
- Android提交数据到服务器的几种方法
- Android解析json数据的几种方法
- android不同activity共享数据的几种方法
- 关于android数据请求的几种封装方法
- Android 向Activity传递数据的几种方法
- 面试笔试杂项积累-leetcode 226-230
- Jquery前端封装 自定义高度CSS模拟 类似于jquery库的写法
- POJ3624 01背包问题
- 学习CUDA--硬件的简单学习
- CF611D 【分割字符串使得形成的数字数组呈递增状态】的方法数
- android下载网络数据的几种方法
- 动态加载jar文件
- 关于coursera上Learning How to Learn课程的读书笔记
- Light OJ 1158 Anagram Division(状压+数位DP)
- 干货!谷歌推荐的技术能力提升指南
- GCD线程的应用
- mysql 插入效率问题
- 二级指针
- 页面居中总结