HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求
简化的说:
WebService = HTTP 协议 + XML
Rest = HTTP 协议 + Json
各种 API = HTTP 协议 + XML / Json 来实现
HTTP 请求信息格式

① 请求行
a.请求方法:GET,POST,PUT,DELETE,TRACE,OPTIONS
b.请求路径(请求的资源,URL 的一部分)
c.所用协议
② 请求头信息
③ 请求主体信息
HTTP 请求除了浏览器,其他只要满足 HTTP 协议的工具都可以发送 HTTP 请求,例如 Telnet(Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式):
Windows 下进入 CMD,输入要接收 HTTP 请求的服务器的 ip 地址:
telnet 127.0.0.17 80
(如果提示:'telnet' 不是内部或外部命令,也不是可运行的程序,则进入:"控制面板” --> “程序” ---> “打开或关闭Windows功能”,勾上“telnet客户端")
按下 ctrl + ]
再按下 Enter,打开回显功能(便于调试);
此时 telnet 客户端已经连接上了 80 端口,于是可以按照 HTTP 协议的标准发送请求:
GET 请求,请求 /php/http/1.php 这个路径,使用 HTTP/1.1 协议进行请求(请求行输入完毕),回车
虚拟目录是 Host:127.0.0.17(请求头信息输入完毕)
回车
回车(空行:头信息和主体信息(可以没有)以空行区分)
HTTP 请求与响应如下:

HTTP 响应信息格式
上图中的响应信息如下:
HTTP/1.1 200 OK
Date: Tue, 07 Jul 2015 13:04:57 GMT
Server: Apache/2.2.21 (Win32) PHP/5.3.10
X-Powered-By: PHP/5.3.10
Content-Length: 5
Content-Type: text/html hello
其中,
响应行:HTTP/1.1 200 OK
响应行分 3 部分:协议版本(HTTP/1.1)、状态码(200)、状态文字(OK)
响应头信息:格式为
key:value
key:value
key:value
...
key:value
content-length:主题的长度
空行
响应主体信息:hello
【例】用 telnet 完成 HTTP 的 POST 请求。
先写一个 php 文件 2.php:
<?php
/*
把接收到的 POST 数据写入文本
要求用 telnet 来请求
*/
$str = implode(',', $_POST);
file_put_contents('post.txt', $str."\r\n", FILE_APPEND);
echo 'write success';
分析:HTTP 请求的格式
$方法 $路径 $协议
请求头信息
(空行)
请求主体信息
如图:

注意:
头信息里要标明主体的长度 Content-Length 和 主体类型 Content-type:application/x-www-form-urlencoded
POST /php/http/2.php HTTP/1.1
Host: 127.0.0.17
Content-type: application/x-www-form-urlencoded
Content-length:19 username=dee&age=28HTTP/1.1 200 OK
Date: Tue, 07 Jul 2015 16:15:03 GMT
Server: Apache/2.2.21 (Win32) PHP/5.3.10
X-Powered-By: PHP/5.3.10
Content-Length: 13
Content-Type: text/html write success 遗失对主机的连接。 C:\Users\Administrator>
其中:
主体信息:username=dee&age=28
同时 post.txt:

至此完成了 POST 请求和响应。
HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求的更多相关文章
- RocketMQ 源码学习笔记————Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记----Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest ...
- RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest Roc ...
- 发送一个简单的http get 请求并且响应
问题 如何发送一个简单的HTTP GET请求并且取回相应的HTTP响应. 设计 创建一个WebClient类的实例,然后使用它的DownloadData()方法. 方案 string uri = &q ...
- requests(一): 发送一个json格式的post请求
今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...
- Java Mail(一):telnet实现发送收取邮件
http://blog.csdn.net/ghsau/article/details/8602076 ******************************* 最近要做一个解析邮件的东东,就顺便 ...
- openerp学习笔记 跟踪状态,记录日志,发送消息
跟踪状态基础数据: kl_qingjd/kl_qingjd_data.xml <?xml version="1.0"?><openerp> <d ...
- (转)live555学习笔记7-RTP打包与发送
七 RTP打包与发送 rtp传送开始于函数:MediaSink::startPlaying().想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当 ...
- Android(java)学习笔记38:Android 短信发送
1.第一种可以调用系统内部的短信程序. 之前我曾经出现过一个bug就是报错: android.content.ActivityNotFoundException: No Activity found ...
- HTML5学习笔记(七)HTML5 服务器发送事件(Server-Sent Events)
Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新.通过服务器发送事件,更新能够自动到达. EventSource 对象用于接 ...
随机推荐
- 图像边缘检测——Sobel算子
边缘是图像最基本的特征,其在计算机视觉.图像分析等应用中起着重要的作用,这是因为图像的边缘包含了用于识别的有用信息,是图像分析和模式识别的主要特征提取手段. 1.何为“图像边缘”? 在图像中,“边缘” ...
- 【读书笔记】读《JavaScript模式》 - 函数复用模式之类式继承模式
实现类式继承的目标是通过构造函数Child()获取来自于另外一个构造函数Parent()的属性,从而创建对象. 1.类式继承模式#1 —— 默认方式(原型指向父函数实例) function Paren ...
- hadoop机架感知
背景 分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群.机架内的机器之间的网络速度通常都会高于跨机架 ...
- **对比$_POST、$GLOBALS['HTTP_RAW_POST_DATA']和file_get_contents('php://input')
最近在开发微信接口,又学到了一些新的技术点,今天就把学到的关于接收数据的技术点给简单的罗列下. public function __construct($token, $wxuser = ''){ $ ...
- javascript 复习代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- Xamarin Android提示找不到资源属性定义
Xamarin Android提示找不到资源属性定义 错误信息:”Resource.Attribute”未包含”actonBarSize”的定义Xamarin Android经常会出现找不到资源属性的 ...
- WPF MVVM模式下的无阻塞刷新探讨
很多时候我们需要做一个工作,在一个方法体里面,读取大数据绑定到UI界面,由于长时间的读取,读取独占了线程域,导致界面一直处于假死状态.例如,当应用程序开始读取Web资源时,读取的时效是由网络链路的速度 ...
- 关于InputStream.read()方法的阻塞原理的测试
最近在一家公司做java实习,写了个网络字节采集器.写了个单例TCPServer来采集数据,其中用到了InputStream.read()来读取数据.产生了一系列问题,下面做下总结: 关于while( ...
- ural 1242. Werewolf
1242. Werewolf Time limit: 1.0 secondMemory limit: 64 MB Knife. Moonlit night. Rotten stump with a ...
- unity label和图片 gui
#pragma strict var str:String; //接收外部复制贴图 var imageTexture:Texture; private var imageWidth:int; priv ...