从零开始搞懂Android网络请求——HttpURLConnection

来源:互联网 发布:spss数据显著性分析 编辑:程序博客网 时间:2024/06/05 19:37

本篇博客主要讲解如何使用HttpURLConnection来实现获取服务器的数据。
本篇博客实现的是一个简单的点击按钮获取服务器数据的Demo

实现步骤:
  1. 实例化一个URL对象
  2. 实例化一个httpURLConnection对象
  3. 设置链接属性(请求方法,读取时间等)
  4. 获取请求状态码,判断连接是否成功
  5. 获取输入流并解析
POST与GET:

post与get方法都属于网络请求的方法,简单来说,get是向服务器请求数据,post是客户端向服务器传数据,获得返回值。

界面设计展示

MainActivity的布局文件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.ycw.httpurlconnectiondemo.MainActivity">    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="点击获取数据库数据"        android:textSize="36dp"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:id="@+id/getmsg"        /></RelativeLayout>


Java代码实现

MainActivity代码:

public class MainActivity extends AppCompatActivity {   private Button getmsg;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        getmsg.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                new Thread(){                    @Override                    public void run() {                        //第一步:实例化URL对象                        String address="http://139.199.171.179/androidtest/androidtest1.php"; //设置接口                        try {                            URL url =new URL(address);   //实例化URL对象                            //实例化 HttpURLConnection对象                            HttpURLConnection conn = (HttpURLConnection) url.openConnection();                            //设置链接属性                            conn.setRequestMethod("GET");//设置请求方法                            conn.setReadTimeout(5000);//设置超时时间                            if(conn.getResponseCode()==200){ //获取状态码 200表示连接成功                                //获取输入流                                InputStream in= conn.getInputStream();                                //读取输入流                                byte[] b=new byte[1024*512]; //定义一个byte数组读取输入流                                ByteArrayOutputStream baos = new ByteArrayOutputStream(); //定义缓存流来保存输入流的数据                                int len=0;                                while((len=in.read(b))>-1){  //每次读的len>-1 说明是是有数据的                                    baos.write(b,0,len);  //三个参数  输入流byte数组   读取起始位置  读取终止位置                                }                                String msg=baos.toString();                                Log.e("TAG",msg);                            }                        } catch (java.io.IOException e) {                            e.printStackTrace();                        }                    }                }.start();            }        });    }    public void initView(){        getmsg = (Button) findViewById(R.id.getmsg);    }}


最终效果

这里写图片描述

阅读全文
1 0