实训-使用HttpUrlConnection

本文详细对比了HTTP请求方法GET与POST的区别,包括安全性、数据大小限制及数据传输方式等内容,并介绍了String、StringBuffer与StringBuilder的区别及其适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GET请求与POST方法的区别

1.POST的安全性要比GET的安全性高。例如通过GET提交数据,用户名和密码将明文出现在URL上, GET与POST只是发送机制不同,并不是一个取一个发
2.Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。这四种方法分别对应查,改,增,删4个操作,它们都是向服务器发送请求。GET方法一般用于获取或者查询数据,而POST 一般用于更新数据,但是在实际操作中,一般使用GET/POST方法就能完成查,改,增,删这4个操作
3.GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据。实际上HTTP协议规范没有对URL长度进行限制,只是因为GET是通过URL提交数据的,而有些浏览器对于URL长度有所限制
4.GET请求的数据会附在URL之后,以?分割URL和传输数据,而POST提交的数据则是放置在HTTP包的包体中

String,StringBuffer,StringBuilder的区别

1.String是字符串常量,与StringBuffer不同的是,String是不可变的对象,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。而 StringBuffer 类则不同,每次结果都会对StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用
2.java.lang.StringBuilder是一个可变的字符序列,是JDK5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候,而StringBuffer则用于多线程操作大量数据。大部分情况下,StringBuilder > StringBuffer,这主要是由于前者不需要考虑线程安全

也就是说,如果要操作少量的数据,用String ;如果是单线程操作大量数据,用StringBuilder ;而多线程操作大量数据,则用StringBuffer

HttpUrlConnection请求网络数据

private void getWebHttp() {
        try {
            //创建URL地址对象
            URL url = new URL("https://www.baidu.com/");
            //创建Connection对象
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //创建输入流对象
            InputStream inputStream = connection.getInputStream();
            //创建Reader对象
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            //创建BufferedReader对象
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            //开始读取
            String http = "";
            StringBuffer stringBuffer = new StringBuffer();
            while ((http = bufferedReader.readLine()) != null) {
                stringBuffer.append(http);
                Log.e("web", stringBuffer.toString());
            }
            //关闭输入流
            inputStream.close();
            //断开连接
            connection.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

HttpUrlConnection加载网络图片

private void getWebImg() {
        try {
            //创建URL地址对象
            URL url = new URL("http://img851.ph.126.net/SkAY17A9MNUapBWEP8uDWg==/2715107625351961908.png");
            //创建Connection对象
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //创建输入流对象
            InputStream inputStream = connection.getInputStream();
            //获取图片
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            //存储图片
            Message message = handler.obtainMessage();
            message.obj = bitmap;
            //发送
            handler.sendMessage(message);
            //关闭输入流
            inputStream.close();
            //断开连接
            connection.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            iv.setImageBitmap((Bitmap) msg.obj);
        }
    };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值