AsyncTask异步加载和HttpURLConnection网络请求数据
//获得网络数据
private void huodeshuju() {
//这里是使用线程,已注释掉
/*new Thread(){
public void run() {
try {
URL url=new URL(urlPath);
HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
urlConnection.setRequestMethod("GET");
urlConnection.connect();
int code=urlConnection.getResponseCode();
if (code==200) {
InputStream inputStream=urlConnection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuffer buffer=new StringBuffer();
while ((line=reader.readLine())!=null) {
buffer.append(line);
}
String str=buffer.toString();
Message message=new Message();
message.what=0;
message.obj=str;
handler.sendMessage(message);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();*/
//----------下面是使用的异步加载-----------------------------
new AsyncTask<String, Void, String>(){
@Override
protected String doInBackground(String... params) {
try {
URL url=new URL(params[0]);
HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
urlConnection.setRequestMethod("GET");
urlConnection.connect();
int code=urlConnection.getResponseCode();
if (code==200) {
InputStream inputStream=urlConnection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
String readerline;
StringBuffer buffer=new StringBuffer();
while ((readerline=reader.readLine())!=null) {
buffer.append(readerline);
}
String str=buffer.toString();
return str;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
try {
JSONObject obj=new JSONObject(result);
JSONArray data=obj.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject json=data.getJSONObject(i);
String id=json.getString("id");
String goods_name=json.getString("goods_name");
String shop_price=json.getString("shop_price");
String market_price=json.getString("market_price");
String is_coupon_allowed=json.getString("is_coupon_allowed");
String is_allow_credit=json.getString("is_allow_credit");
String goods_img=json.getString("goods_img");
String sales_volume=json.getString("sales_volume");
String efficacy=json.getString("efficacy");
Goods goodss=new Goods(id, goods_name, shop_price, market_price, is_coupon_allowed, is_allow_credit, goods_img, sales_volume, efficacy);
goods.add(goodss);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.execute(urlPath);//urlpath为网址
}
AsyncTask异步加载和HttpURLConnection网络请求数据的更多相关文章
- Android AsyncTask异步加载WebAPI
之前做的程序一直存在很多问题,因为需要加载的Activity需要从网络加载数据.并没有完全正确的使用异步的方法去加载! 之前用的虽然是AsyncTask,但是在加载完成的时候还是并没有使用AsyncT ...
- AsyncTask异步加载和Gson
public class MainActivity extends Activity { private List<Goods> goods=new ArrayList<Goo ...
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比--转载
在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一 ...
- Android开发--异步加载
因为移动端软件开发思维模式或者说是开发的架构其实是不分平台和编程语言的,就拿安卓和IOS来说,他们都是移动前端app开发展示数据和用户交互数据的数据终端,移动架构的几个大模块:UI界面展示.本地数据可 ...
- android 之图片异步加载
一.概述 本文来自"慕课网" 的学习,只是对代码做一下分析 图片异步加载有2种方式: (多线程/线程池) 或者 用其实AsyncTask , 其实AsyncTask底层也是用的多 ...
- Android 之异步加载LoaderManager
LoaderManager: Loader出现的背景: Activity是我们的前端页面展现,数据库是我们的数据持久化地址,那么正常的逻辑就是在展示页面的渲染页面的阶段进行数据库查询.拿到数据以后才展 ...
- Jquery树控件ZTree异步加载
异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载. 这里面主要设计ztree的setting变量的async属性设置: var setting = { ...
- Jquery Ztree异步加载树
1. 下载jquery的JS文件/ztree的CSS文件和JS文件 https://jquery.com/download/ https://gitee.com/zTree/zTree_v3/tree ...
- ztree异步加载---------补发周日内容
上周六老师要求和大三的进行JAVA知识交流,总体来说就是给大三学长做的东西打分,然后大三学长再教我们如果构建ztree.毕竟第一次接触ztree,所以有很多不了解,但通过周六日努力,还是做出来了.现在 ...
随机推荐
- Linux中kettle连接hadoop并传数据(5)
http://wiki.pentaho.com/display/BAD/Loading+Data+into+HDFS 新建job
- 取URL得值
有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参 ...
- LINQ的Any() 方法
Enumerable.Any 方法 确定序列中的任何元素是否存在或满足条件.
- Ubuntu14.04下手动建立快捷方式
先在桌面创建一个文件:文件内容如下 [Desktop Entry]Encoding=UTF-8Name=eclipseComment=eclipse ideExec=/home/mars/eclips ...
- First blogs start
这是我第一次写博客笔记,为了更好的成长,从现在开始我的博客记录. 我是从事linux运维的,到目前为止,已经有2年的工作经验了. 希望从此以后我能够坚持每天记录下点点滴滴.
- myBatIs.Net 调用Oracle 存储过程返回游标
找了好久,网上也没示例,全是java的,没办法,后来看到一个网上别人写的例子. http://www.myfirm.cn/blog/article/Control/13.html 上面照套还是出错,我 ...
- 杭电OJ分类
基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1056.1058.1 ...
- Java中的Builder模式
package com.mc.bsfram.others.entity; public class Person { private String name; private String addre ...
- OpenCV成长之路:图像直方图
http://ronny.blog.51cto.com/8801997/1394115 2014-04-11 13:47:27 标签:opencv 直方图 统计表 原创作品,允许转载,转载时请务必以超 ...
- 第十四章:使用CSS3进行增强
1.为不支持某些属性的浏览器使用polyfill:如果想弥合较弱的浏览器和较强的浏览器之间的功能差异,可以使用polyfill(通常又称作垫片),通常用js实现.但是有些较弱的浏览器运行JS的速度要慢 ...