说说Http与Socket的区别,分类详解

来源:互联网 发布:slax linux初始密码 编辑:程序博客网 时间:2024/05/16 05:57

HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。



传输数据的类型: json ; xml ;


传输XML格式的报文:

version="1.0" encoding="utf-8"?>

上面那一段XML头,里面指定了版本信息和编码。如果你用application/xml来传输XML报文,XML报文的编码格式就是UTF-8;如果你使用的是text/xml,采用的编码us-ascii编码。

传输JSON类型的数据:

其实,关于JSON是什么,在这里我就不对赘述,毕竟这篇文章主要不是说JSON,后面有机会的话,我们专门写一片文章来说一下JSON。在这里啊,大家只需要知道它是一种轻量级数据交换格式。那好我们来看一下如何传输JSON格式的数据

通过表单去上传文件,就是涉及到一种请求类型,叫做Multipart/form-data请求,它是什么呢,大家只需要知道:

Multipart/form-data就是使用表单上传文件时的一种格式。当然这句话并不严谨,有时候我们不通过表单上传文件也需要将Content-Type设置成这种类型(啪啪打自己的脸)。

那我们来看一下当我们上传了一个文件之后,HTTP报文是什么样子的呢。好,我们将上图中excel文件上传看一下HTTP报文中将excel解析之后是个什么样子。

上图中主要就是上传excel时的请求头,我们重点看一下Content-Type,可以看出Content-Type=multipart/form-data;

如果我们通过HTTP提交multipart/form-data请求时,必须要做的两件事情:

第一,必须设定Content-Type属性值为multipart/form-data,否则它会以默认的application/x-www-form-urlencoded格式提交请求,会报错。

第二,必须指定boundary,也就是分隔符,并且要保证结束分隔符比开始分割符后面多两个“--”

好了,我们拿一个实例来看一下。

需求:与某公司进行接口对接,需要通过HTTP上传文件,某公司接口标准上传文件类型必须是Multipartfile 文件。

需求分析:Multipartfile是表单提交上传文件时的一种文件类型,Spring中通常使用Multipartfile进行文件上传,通过HTTP上传文件时需要将Content-Type设置为multipart/form-data

那咱们开始写吧。



Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端

原创粉丝点击