AsyncTask GET请求

时间:2022-06-30 23:37:38

布局:

 <?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之三种网络请求解析数据&lpar;最佳案例&rpar;

    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. Linux0&period;11内核--fork进程分析

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5597818.html ] 据说安卓应用里通过fork子进程的方式可以防止应用被杀,大概原理就是 ...

  2. MyEclipse建立SpringMVC入门HelloWorld项目

    一.首先,建立空的web project项目: 1. 2. 3. 二.其次,导入先关jar包 1.将jar包导入SpringMVCHelloWorld\WebRoot\WEB-INF\lib目录下 三 ...

  3. NFC

    NFC手机是指带有NFC模块的手机.带有NFC模块的手机可以做很多相应的应用.NFC是Near Field Communication缩写,即近距离无线通讯技术.在13.56MHz频率运行于20厘米距 ...

  4. 【iOS】Quartz2D基本图形

    一.画线段 - (void)drawRect:(CGRect)rect { // Drawing code // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetC ...

  5. vs2010 调试快捷键

    vs2010 调试快捷键   命令名 快捷键 说明 调试.应用代码更改 Alt + F10 启动生成操作,利用它可以通过“编辑并继续”功能应用对正在调试的代码所作的更改. 调试.自动窗口 Ctrl + ...

  6. HTML5样式和列表、CSS链接的四种状态

    一.HTML5样式 1.标签: <style>:样式定义: <link>:资源引用: 2.属性: type="text/css":引入文档类型: rel=& ...

  7. django在pyhton2&period;7 和 python3&period;&ast; 之间代码和睦相处的方法

    “祥”龙第一掌: from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_ ...

  8. 【转】iOS开发工具系列(按功能分)

    http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...

  9. 项目中git版本控制及协作开发的常用操作(命令行,小乌龟,sourcetree)

    一. git命令:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 小乌龟:htt ...

  10. limit

    在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table  LIMIT [offset ...