HttpUrlConnection的初级应用

本文介绍了HTTP协议的基本概念及其工作原理,详细解释了HTTP作为一种无状态协议的特点,并且介绍了HttpUrlConnection作为实现HTTP请求的一种手段,包括其使用方法及注意事项。

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

什么是Http请求

1.HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。

计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

什么是HttpUrlConnection

1.任何网络连接都需要经过socket才能连接,HttpURLConnection不需要设置socket,所以,HttpURLConnection并不是底层的连接,而是在底层连接上的一个请求。

2.这就是为什么HttpURLConneciton只是一个抽象类,自身不能被实例化的原因。HttpURLConnection只能通过URL.openConnection()方法创建具体的实例。

这里写图片描述

3.虽然底层的网络连接可以被多个HttpURLConnection实例共享,但每一个HttpURLConnection实例只能发送一个请求。请求结束之后,应该调用HttpURLConnection实例的InputStream或OutputStream的close()方法以释放请求的网络资源,不过这种方式对于持久化连接没用。对于持久化连接,得用disconnect()方法关闭底层连接的socket。

如何使用HttpUrlConnection

1.使用get和post

Get请求把提交的数据进行简单编码,同时将url的一部分发送到服务器
比如url:Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
所以get请求方式提交的数据存在一定的安全隐患,如果在使用对安全性要求教高的操作(比如用户登录,支付),应使用post方式。Get请求是默认的http请求方法,我们一般通过get方法来获取表单数据

POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。

使用HttpUrlConnection获取Http请求

package com.lenovo.zy.httpyinyong;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

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 MainActivity extends AppCompatActivity {

    private Button getwebBtn;;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bindID();
        getwebBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        getWebInfo();
                    }
                });
            }
        });
    }

    private void getWebInfo() {
        try{
            URL url=new URL("http://www.lenovo.com");

            HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();

            InputStream inputStream=httpURLConnection.getInputStream();

            InputStreamReader reader=new InputStreamReader(inputStream,"UTF-8");

            BufferedReader bufferedReader=new BufferedReader(reader);

            StringBuffer stringBuffer=new StringBuffer();
            String temp=null;
            while ((temp=bufferedReader.readLine())!=null){
                stringBuffer.append(temp);
            }
        }catch(MalformedURLException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    private void bindID() {
        getwebBtn=findViewById(R.id.getwebBtn2);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值