HttpClient

本文介绍了一个具体的Android应用程序如何使用AsyncTask进行网络请求并解析JSON数据的过程。该程序通过HttpGet发起请求,利用Gson库解析JSON数据为Java对象,并展示了如何在主线程中更新UI显示获取的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.bawie.com.zhoukaomoni;


import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.Toast;


import com.google.gson.Gson;


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;


import java.util.List;


public class Main2Activity extends AppCompatActivity {


    private GridView grid_view;
    private int cid;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);


        grid_view = findViewById(R.id.grid_view);
        Intent intent = getIntent();
        cid = intent.getIntExtra("cid", 0);




        boolean conn = NewUtil.isConn(Main2Activity.this);
        if(conn){
            MyDemo myDemo=new MyDemo();
            myDemo.execute("https://www.zhaoapi.cn/product/getProductCatagory"+"?"+"cid="+cid);
        }else{
            NewUtil.openNetDialog(Main2Activity.this);
        }


    }


     class MyDemo extends AsyncTask<String, Void, Bean2> {
         @Override
         protected Bean2 doInBackground(String... strings) {
             HttpClient client=new DefaultHttpClient();


             HttpGet get=new HttpGet(strings[0]);


             try {
                 HttpResponse response = client.execute(get);
                 int statusCode = response.getStatusLine().getStatusCode();
                 if(statusCode==200){
                     HttpEntity entity = response.getEntity();
                     String str = EntityUtils.toString(entity);
                     Gson gson=new Gson();
                     Bean2 bean2 = gson.fromJson(str, Bean2.class);
                     return bean2;
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
             return null;
         }


         protected void onPostExecute(Bean2 s) {
             super.onPostExecute(s);
             List<Bean2.DataBean> data = s.getData();
             MyReadAdapter myReadAdapter=new MyReadAdapter(Main2Activity.this,data);
             grid_view.setAdapter(myReadAdapter);
         }
     }

}


========================================================================================================================================================================================================================================================================


package com.bawie.com.zhoukaomoni;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;


/**
 * Created by Administrator on 2017/12/30 0030.
 */


public class MyReadAdapter extends BaseAdapter {
    Context context; List<Bean2.DataBean> data;
    public MyReadAdapter(Context context, List<Bean2.DataBean> data) {
        this.context=context;
        this.data=data;
    }


    @Override
    public int getCount() {
        return data.size();
    }


    @Override
    public Object getItem(int i) {
        return data.get(i);
    }


    @Override
    public long getItemId(int i) {
        return i;
    }


    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder;
        if(view==null){
            view = View.inflate(context,R.layout.read_view_layout,null);


            holder=new ViewHolder();
            holder.read_text=view.findViewById(R.id.read_text);
            holder.read_image=view.findViewById(R.id.read_image);


            view.setTag(holder);
        }else{
            holder = (ViewHolder) view.getTag();
        }
        holder.read_text.setText(data.get(i).getName());
        MyPick myPick=new MyPick(holder.read_image);
            myPick.execute(data.get(i).getList().get(i).getIcon());
        return view;
    }
    class ViewHolder{
        ImageView read_image;
        TextView read_text;
    }
    class MyPick extends AsyncTask<String,Void,Bitmap>{


        private ImageView imageView;


        public MyPick(ImageView imageView) {
            this.imageView = imageView;
        }


        @Override
        protected Bitmap doInBackground(String... strings) {


            try {
                URL url=new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setConnectTimeout(5000);
                urlConnection.setReadTimeout(5000);
                urlConnection.setRequestMethod("GET");
                int responseCode = urlConnection.getResponseCode();
                if(responseCode==200){
                    InputStream inputStream = urlConnection.getInputStream();


                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);


                    return bitmap;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }


        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            if(bitmap==null){
                imageView.setImageResource(R.drawable.ic_launcher_background);
            }else{
                imageView.setImageBitmap(bitmap);
            }
        }
    }
}


内容概要:本文全面介绍了数据流图(DFD)的概念、构成元素及其重要性。数据流图是从数据传递和加工的角度,以图形方式表达系统逻辑功能、数据流向和变换过程的工具。文章详细解释了数据流图的四个基本元素:数据流、加工、数据存储和外部实体,并通过实例说明了这些元素在实际场景中的应用。文中强调了数据流图在软件开发需求分析和业务流程优化中的关键作用,通过绘制顶层、中层和底层数据流图,逐步细化系统功能,确保数据流向和处理逻辑的清晰性。此外,文章还指出了常见绘制误区及解决方法,并以在线购物系统为例进行了实战分析,展示了从需求分析到数据流图绘制的全过程。 适合人群:软件工程师、业务分析师、系统设计师以及对系统分析与设计感兴趣的初学者。 使用场景及目标:①帮助开发团队在需求分析阶段清晰展示数据流动和处理过程,避免理解偏差;②辅助企业梳理和优化业务流程,识别效率低下的环节,提升运营效率;③为系统设计和开发提供详细的逻辑框架,确保各模块的功能明确,减少开发错误。 阅读建议:本文内容详实,涵盖了从理论到实践的各个方面。建议读者在学习过程中结合实际项目背景,逐步掌握数据流图的绘制技巧,并通过反复练习和优化,加深对系统分析与设计的理解。
资源下载链接为: https://pan.quark.cn/s/5c50e6120579 《CoffeeTime_0.99.rar:主板BIOS修改工具详述》 在计算机硬件领域,BIOS(基本输入输出系统)是计算机启动时最先加载的软件,它负责初始化硬件设备,并为操作系统提供基本的交互功能。不过,随着处理器技术的持续进步,部分主板可能无法原生支持更新的CPU型号。为解决这一问题,一些技术爱好者和专业人士会通过修改主板BIOS,也就是俗称的“魔改”,来提升其兼容性。本文将深入剖析名为“CoffeeTime_0.99.rar”的工具,它是一款专门用于主板BIOS修改,以实现对第6、7、8、9代英特尔CPU支持的工具。 我们先来看“CoffeeTime.exe”,这是该工具的主程序文件。通常情况下,它会配备一套直观易用的用户界面,方便用户对BIOS进行修改操作。不过,在使用该工具之前,用户必须具备一定的电脑硬件知识,因为一旦操作失误,就可能导致系统运行不稳定,甚至无法启动。对于初学者而言,谨慎操作至关重要,否则可能会造成不可挽回的损失。 “readme.txt”是软件包中常见的文档,一般会包含使用指南、注意事项以及开发者提供的其他重要信息。在使用CoffeeTime之前,用户务必要仔细阅读该文件,因为里面可能包含了如何正确运行程序、避免错误操作以及解压后具体步骤等关键内容。 “bin”和“data”是两个文件夹,它们可能包含了用于BIOS修改的各种二进制文件和数据。“bin”文件夹通常会包含特定版本的BIOS固件或用于修改的工具,而“data”文件夹则可能包含更新CPU微码、识别信息等必要的数据文件。在进行BIOS修改的过程中,这些文件会被程序调用,从而实现对原有BIOS的扩展或修正。 BIOS的修改过程一般包含以下步骤:首先,备份原始BIOS,这是在进行任何修改前的必要步骤,以便
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值