HTTP传输协议详解(简单易懂)

HTTP传输协议原理 目录 1 简介 1.1 简单的HTTP协议 1.2 主要特点 1.3 HTTP请求响应模型 2 工作原理与过程 2.1 工作原理 2.2 用户访问网站的过程? 2.3 HTTP协议栈中各层数据流 3 请求 (1) 请求方法 (2) 请求的网址 (3) 请求头 (4) 请求体 4 响应 (1) 响应状态码 (2) 响应头 (3) 响应体 5 HTTP/1.1与HTTP/1.0的区别 6 HTTP各种长度限制 1. URL长度限制 2. Post数据的长度限制 ... 阅读详情

前言

HTTP: HyperText Transfer Protocol超文本传输协议,是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准;属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。

一、主要特点

1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

二、主要功能详解

1.HTTP访问入口:通过特殊的URL来定位网络资源
格式:http://host[:port][abs_path]
其中:
http:表示要通过HTTP协议来定位网络资源。
  host:表示合法的Internet主机域名或IP地址(以点分十进制格式表示);
  port:用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。
   如果port是空,则使用缺省的端口80。当服务器的端口不是80的时候,需要显式指定端口号。
  abs_path:指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出
abs_path,那么当它作为请求URI时,必须以“/”的形式给出。通常这个工作浏览器就帮我们完
成了。

2.HTTP的请求方式
http请求由三部分组成,分别是:请求行、消息报头、请求正文
主要包含有八中请求方式:
(1)OPTIONS 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送测试服务器功能(允许
客户端查看服务器性能)
(2)GET 向特定资源发出请求(请求指定页面信息,并返回实体主体)
(3)POST 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有
资源的修改
(4)PUT 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
(5)HEAD 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求
类似,返回的响应中没有具体内容,用于获取报头)
(6)DELECT 请求服务器删除request-URL所标示的资源
(请求服务器删除页面)
(7)TRACE 回显服务器收到的请求,用于测试和诊断
(8)CONNECT HTTP/1.1协议中能够将连接改为管道方式的代理服务器
一般最常用的是GET、POST方法的请求。

最常用的案例:
(1)请求post方式:
注意一下:在客户端请求访问服务后台使用的时候,客户端提交的数据必须放在消息主体中(entity-body),协议的数据 编码方式可以由开发者自行设定;在服务端通常是根据请求头(headers)中的Content-Type字段来获取请求中的消息主体使用的方式编码,然后再根据其编码方式进行解析消息主体。

public  String getHttpResponse(String url,String param){
   
   
	
/*	DefaultHttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
   JSONObject response = null;
    try {
        StringEntity s = new StringEntity(json.toString());
        s.setContentEncoding("UTF-8");
       s.setContentType("application/json");
        post.setEntity(s);
        HttpResponse res = client.execute(post);
        if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
            HttpEntity entity = res.getEntity();
            String result = EntityUtils.toString(res.getEntity());
           response = JSONObject.fromObject(result);
        }
   } catch (Exception e) {
       throw new RuntimeException(e);
    }
    return response.toString();
}*/
	try {
   
   	
		//请求http请求连接
		URL postUrl=new URL(url);
		HttpURLConnection httpurlConn = (HttpURLConnection) postUrl.openConnection() ;
		httpurlConn.setRequestMethod("POST");
		httpurlConn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
		httpurlConn.setRequestProperty("Connection", "Keep-Alive");
		httpurlConn.setRequestProperty("Content-Length", "0");
		httpurlConn.setDoInput(true);//是否輸出參數
		httpurlConn.setDoOutput(true);//是否輸入參數
		DataOutputStream dosDataOutputStream=new DataOutputStream(httpurlConn.getOutputStream());
		dosDataOutputStream.write(param.getBytes("UTF-8"));
		dosDataOutputStream.flush();
		dosDataOutputStream.close();
		httpurlConn.connect();//开始连接
		//获取连接response响应
		if(httpurlConn.getResponseCode()
HTTP(超文本传输协议) HTTP超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:TCP、UDP、HTTP、SOCKET之间的区别TCP和UDP:传输层协议;HTTP:应用层协议; 阅读详情

相关推荐

科研党必备:用MATLAB批量处理.mat文件数据的3种高效方法

本文为科研人员提供了使用MATLAB批量处理.mat文件数据的三种高效方法,涵盖智能数据加载、专业可视化与自动化报告生成。通过构建自动化框架、多维度数据画图策略及批量处理流程,帮助用户显著提升数据处理效率与图表专业性,解决海量实验数据的管理与分析难题。

weixin_29089057的博客 71

微带功分器设计与ADS-EM联合仿真实战解析

本文详细解析了微带功分器设计与ADS-EM联合仿真的实战技巧,涵盖特性阻抗计算、ADS原理图设计、版图生成与EM仿真等关键步骤。通过实际案例分享,帮助工程师掌握射频电路设计中的核心技术和调试方法,提升功分器设计效率与性能。

weixin_29280219的博客 450

innovus:Patch Wire(补丁线)

1)选中wire ,shift+A使用Edit Route功能,F3打开edit route对话框。线道Create Patch Wire,设置好层次和宽度。在修补一些min area的drc时,会有一些danling wire的drc冒出来,为了避免这些假错,可以使用工具patch wire功能。2)沿着选中的wire画线即可。如下图,patch wire和regular wire是能看出区别的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1963

[Dify] 如何构建一个带评分功能的 Dify AI 教练系统

本文介绍如何利用Dify开源平台构建具备自动评分功能的AI教练系统。系统通过Prompt设计AI教练角色,使用OpenAPI定义评分工具接口,结合工作流编排实现提问、回答收集、评分和反馈的全流程。文章详细讲解了从AI教练身份设定、多维度评分标准设计到前端可视化展示的实现方法,并提供了可扩展建议,适用于语言训练、面试模拟等多种场景。该系统展示了Dify平台在构建智能化评估应用方面的优势,实现零代码开发专业AI教练解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 333

GlobalBuildingAtlas 建筑物白模数据下载

GlobalBuildingAtlas基于OSM开源数据构建全球建筑物3D白模,提供在线浏览和下载服务。官方资源包括GitHub项目地址和TUM数据库链接,支持行政区划检索建筑物数据。

一醉千秋的专栏 540

二极管钳位电路、限幅电路和检波电路Multisim电路仿真

本文系统介绍了二极管钳位、限幅和检波三种基础电路的工作原理及Multisim仿真验证。钳位电路通过电容-二极管配合实现波形整体平移,将波峰或波谷固定在指定电压;限幅电路利用二极管导通特性削除信号超出设定阈值的部分;检波电路则通过半波整流和电容滤波从调幅波中提取音频信号。三种电路均通过Multisim仿真验证了理论分析结果,展示了二极管在信号处理中的关键作用。这些基础电路广泛应用于信号调理、电平保护和通信解调等领域。

XU157303764的博客 1119

全国青少年信息素养大赛图形化(Scratch)编程考点总结

全国青少年信息素养大赛图形化(Scratch)编程考点总结

伶俐角少儿编程 382

【txt文本加密】使用 cryptography 库实现加密和解密

cryptography 库是一个强大的 Python 库,用于实现加密和解密功能。它提供了各种加密算法,包括对称加密、非对称加密、哈希函数等。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2666

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: oracle12C数据库JSON的应用 --PL/SQL存储过程中JSON解析应用篇
下一篇: ORACLE分页查询SQL语句(最有效的分页)
huahua.Dr
博客等级 码龄8年 87粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值