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

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

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

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

界面设计展示

MainActivity的布局文件


<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);
    }
}


最终效果

从零开始搞懂Android网络请求——HttpURLConnection_第1张图片

你可能感兴趣的:(Android)