HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求

时间:2021-02-02 00:24:59

简化的说:

WebService = HTTP 协议 + XML

Rest = HTTP 协议 + Json

各种 API = HTTP 协议 + XML / Json 来实现

HTTP 请求信息格式

HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求

请求行

  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 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求

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 请求的格式

$方法 $路径 $协议

请求头信息

(空行)

请求主体信息

如图:

HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求

注意:

头信息里要标明主体的长度 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:

HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求

至此完成了 POST 请求和响应。

HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求的更多相关文章

  1. RocketMQ 源码学习笔记————Producer 是怎么将消息发送至 Broker 的?

    目录 RocketMQ 源码学习笔记----Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest ...

  2. RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?

    目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest Roc ...

  3. 发送一个简单的http get 请求并且响应

    问题 如何发送一个简单的HTTP GET请求并且取回相应的HTTP响应. 设计 创建一个WebClient类的实例,然后使用它的DownloadData()方法. 方案 string uri = &q ...

  4. requests&lpar;一&rpar;&colon; 发送一个json格式的post请求

    今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...

  5. Java Mail&lpar;一&rpar;:telnet实现发送收取邮件

    http://blog.csdn.net/ghsau/article/details/8602076 ******************************* 最近要做一个解析邮件的东东,就顺便 ...

  6. openerp学习笔记 跟踪状态,记录日志,发送消息

    跟踪状态基础数据: kl_qingjd/kl_qingjd_data.xml <?xml version="1.0"?><openerp>    <d ...

  7. &lpar;转&rpar;live555学习笔记7-RTP打包与发送

    七 RTP打包与发送 rtp传送开始于函数:MediaSink::startPlaying().想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当 ...

  8. Android(java)学习笔记38:Android 短信发送

    1.第一种可以调用系统内部的短信程序. 之前我曾经出现过一个bug就是报错: android.content.ActivityNotFoundException: No Activity found ...

  9. HTML5学习笔记(七)HTML5 服务器发送事件&lpar;Server-Sent Events&rpar;

    Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新.通过服务器发送事件,更新能够自动到达. EventSource 对象用于接 ...

随机推荐

  1. 高性能网站架构设计之缓存篇(6)- Redis 集群(中)

    昨天晚上钓鱼回来,大发神经,写了篇概括程序员生活现状的文章,没想到招来众多人的口诛笔伐,大有上升到政治层面的趋势. 我也许不会再发表任何冲击心灵的文章,我希望给大家带来更多的正能量,所以那篇文章已被我 ...

  2. Linux负载均衡软件LVS简介

    Linux负载均衡软件LVS LVS集群的体系结构以及特点 1. LVS简介        LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...

  3. java集合类——Stack类

    查看java的API文档,Stack继承Vector类. 栈的特点是后进先出. API中Stack自身的方法不多,基本跟栈的特点有关. import java.util.Stack; public c ...

  4. &lbrack;Form builder&rsqb;&colon;about SYSTEM&period;MESSAGE&lowbar;LEVEL

    If you want to suppress error messages then you have to set a system variable :system.message_level. ...

  5. Java基础12 类型转换与多态

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com ...

  6. AutoCAD&period;net支持后台线程-Socket服务端

    最近因为公司项目的需求,CAD作为服务端在服务器中常驻运行,等待客户端远程发送执行任务的指令,最终确认用Socket-tcp通讯,CAD需要实时监听客户端发送的消息,这时就需要开启线程执行Socket ...

  7. zabbix的安装部署及自定义监控的实现

    此篇感谢我的小师傅. 1. Zabbix主要功能和优劣势说明 1. Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库 ...

  8. pandas合并&sol;连接

    Pandas具有功能全面的高性能内存中连接操作,与SQL等关系数据库非常相似.Pandas提供了一个单独的merge()函数,作为DataFrame对象之间所有标准数据库连接操作的入口 - pd.me ...

  9. luogu2038 &lbrack;NOIp2014&rsqb;无线网络发射器选址 &lpar;前缀和&rpar;

    貌似不用做前缀和也能过? #include<bits/stdc++.h> #define pa pair<int,int> #define CLR(a,x) memset(a, ...

  10. 第十一章 企业项目开发--消息队列activemq

    注意:本章代码基于 第十章 企业项目开发--分布式缓存Redis(2) 代码的github地址:https://github.com/zhaojigang/ssmm0 消息队列是分布式系统中实现RPC ...