Android_网络请求数据之HttpConnection(核心代码)

来源:互联网 发布:靠谱的淘宝女装 编辑:程序博客网 时间:2024/06/05 14:13
注:a:所有网络请求的module必须在清单文件中添加访问网络权限。
      b:请求网络数据的耗时操作的代码必须在子线程中完成,所以子线程请求完数据更新主线程中Ui控件必须Thread+Handler完成。

更新ui部分代码如下(MainActivity ):
package com.example.httpuriconnection;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import java.util.List;public class MainActivity extends AppCompatActivity {    private String Jsondata = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";    private String imagedata = "http://img.my.csdn.net/uploads/201407/26/1406383265_8550.jpg";    private TextView text;    private ImageView image;    private ListView listview;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what == 1) {                String Json = (String) msg.obj;                Gson gson = new Gson();                Bean bean = gson.fromJson(Json, Bean.class);                String info = bean.getInfo();                int status = bean.getStatus();                List<Bean.DataBean> data = bean.getData();                MyAdapter myAdapter = new MyAdapter(data, MainActivity.this);                listview.setAdapter(myAdapter);            } else if (msg.what == 2) {                Bitmap obj = (Bitmap) msg.obj;                image.setImageBitmap(obj);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        text = (TextView) findViewById(R.id.getdata);        image = (ImageView) findViewById(R.id.image);        listview = (ListView) findViewById(R.id.listview);    }    //获取新闻Json数据    public void getdatas(View v) {        //Toast.makeText(MainActivity.this,"获取新闻Json数据",Toast.LENGTH_SHORT).show();        new Thread(new Runnable() {            @Override            public void run() {                String json = UriNetTools.getJson(Jsondata);                Message message = Message.obtain();                message.obj = json;                message.what = 1;                handler.sendMessage(message);            }        }).start();    }    //获取图片资源    public void images(View v) {        //Toast.makeText(MainActivity.this, "获取图片资源", Toast.LENGTH_SHORT).show();        new Thread(new Runnable() {            @Override            public void run() {                Bitmap getimage = UriNetTools.getimage(imagedata);                Message message = Message.obtain();                message.obj = getimage;                message.what = 2;                handler.sendMessage(message);            }        }).start();    }}
请求数据代码如下(工具类):
package com.example.httpuriconnection;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * author:Created by GengShiCong on 2017/9/27. */public class UriNetTools {    //获取网络数据    public static String getJson(String uristring) {        try {            URL url = new URL(uristring);            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();            urlConnection.setRequestMethod("GET");            urlConnection.setConnectTimeout(8000);            InputStream inputStream = urlConnection.getInputStream();            StringBuilder stringBuilder = new StringBuilder();            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));            String string = "";            while ((string = bufferedReader.readLine()) != null) {                stringBuilder.append(string);            }            return stringBuilder.toString();        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return "";    }    //获取网络图片    public static Bitmap getimage(String uristring) {        try {            URL url = new URL(uristring);            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();            int responseCode = urlConnection.getResponseCode();            if (responseCode == 200) {                InputStream inputStream = urlConnection.getInputStream();                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);                return bitmap;            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}