HTTP

  • Get和Post方式有什么区别
  • HttpUrlConnection请求网络数据实例
  • HttpUrlConnection加载网络图片实例
  • String/StringBuffer/StringBuilder什么区别

一、HTTP协议
“超文本传输协议”,是互联网上应用最为广泛的一种网络协议,用于实现互联网中www服务。

二、HTTP请求
1.HTTP请求是客户端和服务器端之间,发送请求和返回应答的标准(TCP)
2.客户端发出一个HTTP请求后,就与服务器建立起了TCP连接,服务端接收到请求后进行处理后返回客户端响应数据。

三、使用HTTPURLConnection发送GET请求的步骤
1.创建URL对象
2.通过URL对象调用openConnection()方法获得HTTPURLConnection对象。
3.HTTPURLConnection对象设置其他连接属性
4.HTTPURLConnection对象调用getInputStream()方法向服务器发送HTTP请求并获取到服务器返回的输入流
5.读取输入流,转换成String字符流

四、Get和Post方式有什么区别
1.get方式属于明文传参,在地址栏中可以看到参数,调用简单不安全
2.post属于不可见传参,调用安全。

HttpUrlConnection请求网络数据实例

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加载网络图片实例

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类是不可变的,对String类的任何改变,都是返回一个新的String类对象。
StringBuffer对象的每次修改都会改变对象自身,StringBuffer是线程安全的
StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用,一般在单线程中使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值