Http的简单介绍
之前写过一篇使用HttpListener作为简单的HTTP服务器,后面实际项目中就用到了,测试发现,在Win7下如果不是以管理员权限运行程序,使用HttpListener是会出错了。
所以就很好奇HTTP服务器是怎么个回事。也就借此机会熟悉一下HTTP协议的内容,用TCP来实现一遍HTTP客户端和服务端,啥简介的这里就不写了。直接记录一下关键内容。
HTTP请求报文格式:
请求行CRLF
请求头CRLF
CRLF
请求主体
请求行格式:请求方法 URL 协议版本
请求头信息与请求主体之间必须要添加CRLF。
如果是POST请求,则需要增加请求主体内容,此时请求头中必须添加Content-Length信息,标明请求主体信息的内容长度。
简易GET请求报文内容:
GET /remote HTTP/1.1\r\n
Host: localhost:1205\r\n
\r\n
Get请求无请求主体,所以请求主体为空
简易POST请求报文内容:
POST / HTTP/1.1\r\n
Host: localhost:1205\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length:22\r\n
\r\n
username=xiao&pwd=ming
C#实现如图:
HTTP响应报文格式
状态行CRLF
响应头CRLF
CRLF
响应主体
状态行格式:协议版本 状态码 描述
简易响应报文:
HTTP/1.1 200 OK\r\n
Content-Length:22\r\n
Content-Type: application/json\r\n
\r\n
{"info":"hello world"}
C#实现如图:
最新文章
- ubuntu15.04 nginx1.6.5 配置虚拟主机
- T-SQL实用查询之常用SQL语句
- POSIX正则表达式
- Android开源框架——Volley
- Kmeans方法
- LintCode Reverse LinkedList (ArrayList 和 LinkedList 的区别)
- ini_set 设置php配置项 在windows和linux下的不同
- As3 Anchored Container 代码设置锚点旋转
- (四)主控板改IP,升级app,boot,mac
- 用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.
- 并查集 poj1611&;poj2492
- EBS-PAC成本更新事务处理
- Dos.ORM Select查询 自定义列
- Android中查看布局文件中的控件(view,id)在哪里被调用(使用)
- MySQL 优化实施方案
- Graham凸包算法简介
- BATCH+VBS脚本自动执行命令
- 解决:启用多线程调用webBrowsers函数报错:指定的转换无效
- bluemix创建docker容器
- 【转】 VGA时序及其原理