HTTP请求
一.GET和POST方法有什么区别
get方式属于明文传参(不加密),在地址栏参数可见 
 post方式属于暗文传参,在地址栏参数不可见
二.HttpURLConnection请求网络数据实例
创建URL地址对象
URL url = new URL("https://www.baidu.com/");创建Connection对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();创建输入流对象
InputStream inputStream = connection.getInputStream();创建Reader对象
InputStreamReader reader = new InputStreamReader(inputStream);创建BufferedReader对象
Bufferedder bufferedReader = new BufferedReader(reader); 开始读取
String temp = "";
            StringBuffer stringBuffer = new StringBuffer();
            while ((temp = bufferedReader.readLine()) != null) {
                stringBuffer.append(temp);
            }
            Log.e("WEB", stringBuffer.toString());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }布局文件:
<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="com.example.myapplication.WebActivity">
<Button  android:layout_width="match_parent" android:layout_height="50dp" android:text="访问网络" android:id="@+id/web_btn"/>
    <Button  android:layout_width="match_parent" android:layout_height="50dp" android:text="访问网络图片" android:id="@+id/pic_btn"/>
LinearLayout>
主类: 
 按下按钮就能访问到创建url对象里面填的地址
package com.example.myapplication;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
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;
public class WebActivity extends AppCompatActivity {
    private Button web_btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
            web_btn =findViewById(R.id.web_btn);
            web_btn.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick (View view){
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        //getWebInfo();
                    }
               }).start();
            }
            });
      }
    public void getWebInfo() {
        try {
            //创建URL地址对象
            URL url = new URL("https://www.baidu.com/");
            //创建Connection对象
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //创建输入流对象
            InputStream inputStream = connection.getInputStream();
            //创建Reader对象
            InputStreamReader reader = new InputStreamReader(inputStream);
            //创建BufferedReader对象
            BufferedReader bufferedReader = new BufferedReader(reader);
            //开始读取
            String temp = "";
            StringBuffer stringBuffer = new StringBuffer();
            while ((temp = bufferedReader.readLine()) != null) {
                stringBuffer.append(temp);
            }
            Log.e("WEB", stringBuffer.toString());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    }
三.HttpURLConnection加载网络图片实例
布局文件:
<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="com.example.myapplication.WebActivity">
    <Button  android:layout_width="match_parent" android:layout_height="50dp" android:text="访问网络图片" android:id="@+id/pic_btn"/>
    <ImageView  android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pic" android:scaleType="centerCrop"/>
LinearLayout>
主类: 
 创建一个内部类:
 public void getPic(){
        try {
            URL url = new URL("http://img2.imgtn.bdimg.com/it/u=2843597872,3901877888&fm=27&gp=0.jpg");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = connection.getInputStream();
            Bitmap bm = BitmapFactory.decodeStream(inputStream);
            Message msg = handler.obtainMessage();
            msg.obj = bm;
            handler.sendMessage(msg);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
点击按钮就在下面显示从网络上面获取图片:
pic_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                            getPic();
                    }
                }).start();
            }
        });因为传输数据不能在子线程里面进行,所以要用到handler: 
 这是传输数据
Message msg = handler.obtainMessage();
            msg.obj = bm;
            handler.sendMessage(msg);接收数据:
private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bitmap bitmap = (Bitmap) msg.obj;
            pic.setImageBitmap(bitmap);
        }
    };下面是完整代码:
package com.example.myapplication;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
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;
public class WebActivity extends AppCompatActivity {
    private Button pic_btn;
    private ImageView pic;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bitmap bitmap = (Bitmap) msg.obj;
            pic.setImageBitmap(bitmap);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
        pic_btn = findViewById(R.id.pic_btn);
        pic = findViewById(R.id.pic);
        pic_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                            getPic();
                    }
                }).start();
            }
        });
      }
    public void getPic(){
        try {
            URL url = new URL("http://img2.imgtn.bdimg.com/it/u=2843597872,3901877888&fm=27&gp=0.jpg");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = connection.getInputStream();
            Bitmap bm = BitmapFactory.decodeStream(inputStream);
            Message msg = handler.obtainMessage();
            msg.obj = bm;
            handler.sendMessage(msg);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    }
按下访问网络图片的效果图: 
 
四.String StringBuffer StringBuilder有什么区别
String
字符串常量,String 是不可变的对象
StringBuffer
字符串变量(线程安全,多线程下操作大量的数据用StringBuffer) 
 StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。
StringBuilder
字符串变量(非线程安全,单线程下操作大量的数据就使用StringBuilder)
- 在执行速度上:StringBuilder–>StringBuffer–>String
- String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。