布局:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="net.bwie.network.MainActivity"> <Button
android:id="@+id/get_network_data_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下载网络数据"/> <Button
android:id="@+id/get_pic_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取网络图片"/> <ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/> </LinearLayout>

Activity:

 /**
* 使用异步任务下载网络数据
* 使用gson解析
* 注:有时间看看我讲的原生json解析
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener { public static final String KAI_YAN_URL = "http://baobab.kaiyanapp.com/api/v4/tabs/selected?udid=11111&vc=168&vn=3.3.1&deviceModel=Huawei%36&first_channel=eyepetizer_baidu_market&last_channel=eyepetizer_baidu_market&system_version_code=20"; protected Button mGetNetworkDataBtn;
protected Button mGetPicBtn;
protected ImageView mImageView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
initView();
} @Override
public void onClick(View view) {
if (view.getId() == R.id.get_network_data_btn) {
getDatas();
} else if (view.getId() == R.id.get_pic_btn) {
getPicture();
}
} private void getDatas() {
MyTask task = new MyTask();
task.execute(KAI_YAN_URL);
} private void getPicture() {
String imgUrl = "http://img.kaiyanapp.com/1699f3946ccd281230a1d887d169439f.png?imageMogr2/quality/60/format/jpg"; Picasso
.with(this)
.load(imgUrl)
.into(mImageView);
} private void initView() {
mGetNetworkDataBtn = (Button) findViewById(R.id.get_network_data_btn);
mGetNetworkDataBtn.setOnClickListener(MainActivity.this);
mGetPicBtn = (Button) findViewById(R.id.get_pic_btn);
mGetPicBtn.setOnClickListener(MainActivity.this);
mImageView = (ImageView) findViewById(R.id.image_view);
} private class MyTask extends AsyncTask<String, Void, List<KaiYan.ItemBean>> { @Override
protected List<KaiYan.ItemBean> doInBackground(String... params) {
String requestUrl = params[0];
// 使用HTTPUrlConnection
try {
URL url = new URL(requestUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 配置connection
connection.setRequestMethod("GET");// GET或POST必须大写
// 连接网络
connection.connect();
// 判断是否连接成功
if (connection.getResponseCode() == 200) {
// 获取来自网络的输入流
// 使用缓冲字符输入流
// 字节流转字符流
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(connection.getInputStream())); // 最终接收的json字符串
String json = "";
// 使用缓冲流读取到的每一行数据
String line = ""; while ((line = br.readLine()) != null) {
json += line.trim();
}
// json数据产生完毕,该解析了
Gson gson = new Gson();
KaiYan kaiYan = gson.fromJson(json, KaiYan.class);
List<KaiYan.ItemBean> itemList = kaiYan.getItemList();
return itemList; }
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "下载错误", Toast.LENGTH_SHORT).show();
} return null;
} @Override
protected void onPostExecute(List<KaiYan.ItemBean> itemList) {
super.onPostExecute(itemList); // 可以使用RecyclerView或ListView展示数据
for (KaiYan.ItemBean itemBean : itemList) {
Log.d("1507", "type: " + itemBean.getType() +
", title: " + itemBean.getData().getTitle() +
", url" + itemBean.getData().getPlayUrl());
}
}
} }

Bean:

 package net.bwie.network.bean;

 import java.util.List;

 public class KaiYan {

     private List<ItemBean> itemList;

     public List<ItemBean> getItemList() {
return itemList;
} public void setItemList(List<ItemBean> itemList) {
this.itemList = itemList;
} public static class ItemBean { private String type = "";
private DataBean data; public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public DataBean getData() {
return data;
} public void setData(DataBean data) {
this.data = data;
} public static class DataBean { private String playUrl = "";
private String title = ""; public String getPlayUrl() {
return playUrl;
} public void setPlayUrl(String playUrl) {
this.playUrl = playUrl;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
}
} } }

权限:  <uses-permission android:name="android.permission.INTERNET"/>

AsyncTask GET请求的更多相关文章

  1. AsyncTask POST请求

    布局: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint. ...

  2. Android使用AsyncTask设置请求超时的注意事项

    备注:该篇文章为原创,转载请声明地址,谢谢! /** * AsyncTaskTools2集成了AsyncTask类 * 前三个参数为回到函数,最后一个为全局的Context */ final Asyn ...

  3. Android性能优化典例(二)

    1.使用 Maven 依赖方案代替使用导入jar包方案 如果项目中需要用到第三方jar包,常用的做法是去网上下载后然后放入libs文件夹,再添加到项目依赖,不过,在Android Studio已经不推 ...

  4. (转载) 清理缓存 IPackageStatsObserver

    清理缓存 IPackageStatsObserver 2016-04-10 13:40 2288人阅读 评论(0) 收藏 举报  分类: android(59)  版权声明:本文为博主原创文章,未经博 ...

  5. Android Studio利用异步任务AsyncTask发送post请求获取json数据

    syncTask,是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主 ...

  6. AsyncTask异步加载和HttpURLConnection网络请求数据

    //获得网络数据    private void huodeshuju() { //这里是使用线程,已注释掉        /*new Thread(){            public void ...

  7. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  8. Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案

    一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...

  9. Android笔记——AsyncTask介绍

    AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...

随机推荐

  1. 剑指offer六之求旋转数组的最小数字

    一.题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  2. (转)Python 日志处理(三) 日志状态码分析、浏览器分析

    原文:https://www.cnblogs.com/i-honey/p/7791564.html 在企业中,从日志中提取数据进行分析,可以帮助企业更加了解用户行为,用户最感兴趣的产品或者内容,分析得 ...

  3. 和我一起打造个简单搜索之ElasticSearch集群搭建

    我们所常见的电商搜索如京东,搜索页面都会提供各种各样的筛选条件,比如品牌.尺寸.适用季节.价格区间等,同时提供排序,比如价格排序,信誉排序,销量排序等,方便了用户去找到自己心里理想的商品. 站内搜索对 ...

  4. Spring整合Mybatis原理简单分析

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" ...

  5. vue源码之抽象dom树

    一.抽象DOM树 使用过vue的朋友应该都知道,vue使用的是虚拟DOM,将DOM抽象成一个以JavaScript对象为节点的虚拟DOM树,以VNode节点模拟真实DOM,可以对这颗抽象树进行创建节点 ...

  6. js设计模式总结3

    1.模板方法模式 模板方法就是将多个模型抽象化归一,从中取出一个最基本的模板,当然这个模板可以作为实体对象也可以作为抽象对象,看你具体需求,其他模块只需要继承这个模块方法,也可以扩展这个方法. 举例子 ...

  7. multiset多重集合容器(常用的使用方法总结)

    关于C++STL中multiset集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. multiset多重集合容器和set集合容器的使用方法大多相同,不同的是multiset多重集合容器允许重复 ...

  8. vue实用组件——页面公共头部

    可伸缩自适应的页面头部,屏幕适应范围更广泛 效果如下: 代码如下: <template> <div class="site-header"> <div ...

  9. Docker镜像的获取和推送

    查找镜像 查找镜像的方法有主要有两种,一种是在Docker Hub官方网站查找,网址为https://hub.docker.com/ 另一种方法是在命令行界面中通过docker serach < ...

  10. MVC初级知识之——View与Controller的讲解

    Controller是MVC中比较重要的一部分.几乎所有的业务逻辑都是在这里进行处理的,并且从Model中取出数据.在ASP.NET MVC Preview5中,将原来的Controller类一分为二 ...