java实现http客户端

本文介绍了HTTP协议的基础知识,包括GET和POST请求的区别,以及HTTP响应的状态码。接着,详细讲述了如何使用Java来实现HTTP客户端,包括调用GET和POST请求的方法,重点提及了HttpURLConnection和HttpClient4.5在不同JDK版本中的应用。
摘要由CSDN通过智能技术生成

一、http概述

http: 超文本传输协议,基于TCP协议之上的一种请求-响应协议
(浏览器和服务器之间首先建立TCP连接,然后进行通信)

1、http请求

由header和body构成

header头组成:
请求方法 路径 http版本
host:域名或ip
user-agent:客户端类型
accept:客户端能处理的http响应格式
accept-language:客户端接收的语言

1.1、get请求

只有header,没有body get请求的参数必须附加在url上,并以urlencode方式编码
因为URL长度限制,get请求参数不能太多

1.2、post请求

post请求:
header中通常要设置
content-type:表示body类型
content-length:表示body长度
请求中带有body,空行分隔
请求参数必须放到body中 请求参数编码格式,在content-type中设置

2、http响应

由header和body组成

header头组成:
http版本 响应代码 响应说明
content-type:表示body类型
content-length:表示body长度

2.1、响应代码

响应代码类型:
1xx:表示一个提示性响应;
2xx:表示一个成功响应;
3xx:表示一个重定向响应;
4xx:表示客户端问题导致的错误响应;
5xx:表示服务器问题导致的错误响应

HTTP/1.0协议(早期的http版本),每次发送请求,客户端都要先创建一个tcp连接,比较耗时;
HTTP/1.1协议允许在一个TCP连接中反复发送-响应,效率大大提高 ;
HTTP/2.0允许客户端在没有收到响应的时候,发送多个HTTP请求

二、java实现http客户端

3、调用get请求

早期的JDK版本是通过HttpURLConnection访问HTTP

       //通过给定的URL字符串创建URL
        URL url = new URL("https://blog.csdn.net/ococotwd?spm=1011.2124.3001.5113");
       //打开一个URL连接,并运行客户端访问资源。
       //openConnection() 返回一个 java.net.URLConnection。
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setUseCaches(false);
        conn.setConnectTimeout(5000);
        // 设置HTTP头:
        conn.setRequestProperty("Accept", "*/*");
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 11; Windows NT 5.1)");
        // 连接并发送HTTP请求:
        conn.connect();
        
        // 判断HTTP响应是否200:
        if (conn.getResponseCode() != 200) {
   
            throw new RuntimeException("bad response");
        }
        // 获取响应内容:
        BufferedReader reader= new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
        StringBuffer strbuf= new StringBuffer();
        String current;
        while((current = reader.readLine()) != null)
        {
   
            strbuf.append
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

twdnote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值