HTTP 请求协议简单介绍

news2025/6/7 18:59:27

目录

常见的 HTTP 响应头字段

Java 示例代码:发送 HTTP 请求并处理响应

代码解释:

运行结果:

文件名:

总结:


HTTP(HyperText Transfer Protocol)是用于客户端与服务器之间通信的协议。它定义了客户端(通常是浏览器)如何请求资源以及服务器如何响应这些请求。HTTP 协议是无状态的,意味着每个请求都是独立的,服务器不会记住客户端的状态。

在 HTTP 中,响应的状态码是非常重要的,它们帮助客户端了解请求的处理结果。常见的 HTTP 状态码可以分为以下几类:

  1. 1xx:临时状态码

    • 表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成,则忽略它。

    • 示例:100 Continue101 Switching Protocols

  2. 2xx:成功

    • 表示请求已经被成功接收,处理已完成。

    • 示例:200 OK201 Created204 No Content

  3. 3xx:重定向

    • 表示需要客户端进一步操作才能完成请求。

    • 示例:301 Moved Permanently302 Found304 Not Modified

  4. 4xx:客户端错误

    • 请求出现错误,责任在客户端。例如请求了不存在的资源,客户端未被授权,禁止访问等。

    • 示例:400 Bad Request401 Unauthorized403 Forbidden404 Not Found

  5. 5xx:服务器错误

    • 请求处理发生错误,责任在服务端。

    • 示例:500 Internal Server Error502 Bad Gateway503 Service Unavailable

常见的 HTTP 响应头字段
  • Content-Type:表示响应内容的类型,例如 text/htmlapplication/json

  • Content-Length:表示响应内容的长度(字节数)。

  • Content-Encoding:表示响应内容使用的压缩算法,例如 gzip

  • Cache-Control:指示客户端如何缓存响应内容,例如 max-age=300 表示可以最多缓存 300 秒。

  • Set-Cookie:告知浏览器为当前页面设置 cookie

Java 示例代码:发送 HTTP 请求并处理响应

import java.io.*;
import java.net.*;
import java.nio.charset.StandardCharsets;

public class HttpRequestExample {

    public static void main(String[] args) {
        String urlString = "https://jsonplaceholder.typicode.com/posts"; // 示例 URL
        HttpURLConnection connection = null;
        
        try {
            // 创建 URL 对象
            URL url = new URL(urlString);
            
            // 打开连接
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET"); // 设置请求方法为 GET
            connection.setConnectTimeout(5000); // 设置连接超时为 5 秒
            connection.setReadTimeout(5000); // 设置读取超时为 5 秒
            connection.setRequestProperty("Accept", "application/json"); // 设置请求头
            
            // 获取响应代码
            int responseCode = connection.getResponseCode();
            System.out.println("HTTP Response Code: " + responseCode);
            
            // 读取响应内容
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            
            // 打印响应内容
            System.out.println("Response Content: ");
            System.out.println(response.toString());
            
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect(); // 关闭连接
            }
        }
    }
}

代码解释:

  1. HttpURLConnection:这是 Java 提供的用于处理 HTTP 请求和响应的类。

  2. setRequestMethod("GET"):设置请求方法为 GET,可以根据需要修改为 POST、PUT 等。

  3. setRequestProperty("Accept", "application/json"):设置请求头,指定客户端希望接收 JSON 格式的数据。

  4. getResponseCode():获取 HTTP 响应的状态码。

  5. getInputStream():读取响应体,返回的 InputStream 可以用来获取响应的内容。

运行结果:

如果你运行该程序,假设 URL https://jsonplaceholder.typicode.com/posts 返回的是一个 JSON 数组,那么运行输出可能如下:

HTTP Response Code: 200
Response Content: 
[{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit..."
},
{
  "userId": 1,
  "id": 2,
  "title": "qui est esse",
  "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque..."
},
...]

文件名:

  • HttpRequestExample.java:Java 文件名。

总结:

通过上面的示例代码,你可以快速了解如何在 Java 中发送 HTTP 请求,并处理响应。你可以根据实际需求修改请求方法、请求头、以及请求体等内容。此外,了解 HTTP 响应的状态码和头字段对于调试和优化 Web 应用是非常重要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2403249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++学习-入门到精通【14】标准库算法

C学习-入门到精通【14】标准库算法 目录 C学习-入门到精通【14】标准库算法一、对迭代器的最低要求迭代器无效 二、算法1.fill、fill_n、generate和generate_n2.equal、mismatch和lexicographical_compare3.remove、remove_if、remove_copy和remove_copy_if4.replace、replace_…

HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖

##鸿蒙核心技术##运动开发##Core Speech Kit(基础语音服务)# 前言 在运动类应用中,语音播报功能不仅可以提升用户体验,还能让运动过程更加生动有趣。想象一下,当你准备开始运动时,一个温暖的声音提醒你“…

vscode使用系列之快速生成html模板

一.欢迎来到我的酒馆 vscode,yyds! 目录 一.欢迎来到我的酒馆二.vscode下载安装1.关于vscode你需要知道2.开始下载安装 三.vscode快速创建html模板 二.vscode下载安装 1.关于vscode你需要知道 Q:为什么使用vscode? A:使用vscode写…

网页前端开发(基础进阶4--axios)

Ajax Ajax(异步的JavaScript和XML) 。 XML是可扩展标记语言,本质上是一种数据格式,可以用来存储复杂的数据结构。 可以通过Ajax给服务器发送请求,并获取服务器响应的数据。 Ajax采用异步交互:可以在不重新加载整个页面的情况下&am…

软件安全:漏洞利用与渗透测试剖析、流程、方法、案例

在数字时代,软件已深度融入生活与工作的方方面面,从手机应用到企业核心系统,软件安全至关重要。而漏洞利用与渗透测试,作为软件安全领域中相互关联的两个关键环节,一个是黑客攻击的手段,一个是安全防护的方…

Haproxy的基础配置

1、参考文档 官方文档:HAProxy version 2.2.22 - Configuration Manual 运维派配置手册:Haproxy-基础配置详解 - 运维派 Haproxy 的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分。 2、haproxy global 配置 global&…

考研系列—操作系统:冲刺笔记(1-3章)

目录 第一章 计算机系统概述 1.基本概念 2.内核态和用户态 3.中断(外中断)、异常(内中断-与当前执行的) 4.系统调用 5.操作系统引导程序 2021年真题: 6.操作系统结构 大纲新增 (1)分层结构 (2)模块化 (3)外核 7.虚拟机 第二章 进程管理 1.画作业运行的顺序和甘…

Java调用大模型API实战指南

文章目录 前言调用大模型的流程概述和基本原理获取 DeepSeek 的 API keyJava 实现调用大模型 API 的Demo进阶扩展建议 前言 随着大语言模型(如 OpenAI、DeepSeek、通义千问等)的发展,我们可以很方便地用 API 接口调用这些强大的智能助手。在…

单片机0-10V电压输出电路分享

一、原理图 二、芯片介绍 GP8101是一个PWM信号转模拟信号转换器,相当于一个PWM信号输入,模拟信号输出的DAC。此 芯片可以将占空比为0%到100%的PWM信号线性转换成0-5V或者0-10V的模拟电压,并且输出电压 精度小于1%。GP8101M可以处理高频调制的…

大模型模型部署和暴露接口

创建环境 激活案件 安装相关依赖 conda create -n fastApi python3.10 conda activate fastApi conda install -c conda-forge fastapi uvicorn transformers pytorch pip install safetensors sentencepiece protobuf 新建文件夹 mkdir App cd App touch main.py 复制代码…

2025服装收银系统推荐:智能管理助力服装商家高效经营

在服装批发零售行业,一套高效的收银系统不仅能简化日常经营流程,还能通过数据分析帮助商家优化库存、提升销售。随着AI技术的普及,现代收银系统已不再局限于简单的记账功能,而是能提供智能选品、库存预警、精准营销等进阶服务。 …

Microsoft Copilot Studio - 尝试一下Agent

1.简单介绍 Microsoft Copilot Studio以前的名字是Power Virtual Agent(简称PVA)。Power Virutal Agent是2019年出现的,是低代码平台Power Platform的一部分。当时Generative AI还没有出现,但是基于已有的Conversation AI技术,即Microsoft L…

【Python 算法零基础 4.排序 ⑨ 堆排序】

目录 一、问题描述 二、算法对比 1.朴素算法 ① 数组模拟容器 ② 有序数组模拟容器 2.二叉堆 ① 二叉堆特点 ② 数组表示二叉树 ③ 堆 ④ 大顶堆 ⑤ 小顶堆 ⑥ 元素插入 ⑦ 获取堆顶 ⑧ 堆顶元素删除 三、代码分析 1.工具函数 2.调整大顶堆函数 Ⅰ、计算子节点索引 Ⅱ、找出最…

Deepseek/cherry studio中的Latex公式复制到word中

需要将Deepseek/cherry studio中公式复制到word中,但是deepseek输出Latex公式,比如以下Latex代码段,需要通过Mathtype翻译才能在word中编辑。 $$\begin{aligned}H_1(k1) & H_1(k) \frac{1}{A_1} \left( Q_1 u_1(k) Q_{i1} - Q_2 u_2(k…

32单片机——窗口看门狗

1、WWDG的简介 WWDG:Window watchdog,即窗口看门狗 窗口看门狗本质上是能产生系统复位信号和提前唤醒中断的递减计数器 WWDG产生复位信号的条件: (1)当递减计数器值从0x40减到0x3F时复位(即T6位跳变到0&a…

IDEA 中 Undo Commit,Revert Commit,Drop Commit区别

一、Undo Commit 适用情况:代码修改完了,已经Commit了,但是还未push,然后发现还有地方需要修改,但是又不想增加一个新的Commit记录。这时可以进行Undo Commit,修改后再重新Commit。如果已经进行了Push&…

DAY43打卡

浙大疏锦行 kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 fruit_cnn_project/ ├─ data/ # 存放数据集(需手动创建,后续放入图片) │ ├─ train/ …

Leetcode 1892. 页面推荐Ⅱ

1.题目基本信息 1.1.题目描述 表: Friendship ---------------------- | Column Name | Type | ---------------------- | user1_id | int | | user2_id | int | ---------------------- (user1_id,user2_id) 是 Friendship 表的主键(具有唯一值的列的组合…

进程——环境变量及程序地址空间

目录 环境变量 概念 补充:命令行参数 引入 其它环境变量 理解 程序地址空间 引入 理解 虚拟地址存在意义 环境变量 概念 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。打个比方,就像你布置房间,这些参数就类…

VR视频制作有哪些流程?

VR视频制作流程知识 VR视频制作,作为融合了创意与技术的复杂制作过程,涵盖从初步策划到最终呈现的多个环节。在这个过程中,我们可以结合众趣科技的产品,解析每一环节的实现与优化,揭示背后的奥秘。 VR视频制作有哪些…