首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» PHP再学习1——cURL表单提交、HTTP请求和响应分析
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
PHP再学习1——cURL表单提交、HTTP请求和响应分析
发短消息
加为好友
我是MT
当前离线
UID
1023166
帖子
6651
精华
0
积分
3328
阅读权限
90
来自
燕山大学
在线时间
230 小时
注册时间
2013-12-19
最后登录
2016-1-5
论坛元老
UID
1023166
性别
男
来自
燕山大学
1
#
打印
字体大小:
t
T
我是MT
发表于 2015-6-29 17:22
|
只看该作者
PHP再学习1——cURL表单提交、HTTP请求和响应分析
互联网
,
工程师
,
传感器
,
嵌入式
,
技术
1.前言
最近迷恋WEB方面的技术,虽然自己是一个嵌入式工程师,但是我深知若需要把传感器终端的数据推送至“平台”必然会和WEB技术打交道。在工作中发现嵌入式工程师喜欢
二进制形式
的协议,例如MODBUS。虽然这些协议使用广泛,但是使用这些协议需要在服务器侧专门做一个复杂的解析程序,之后再把数据搬入数据库,这便带来了升级或修改的风险。如果可以使用现有的
HTTP 表单
手段或
JSON+RESTFUL
手段,是不是可以简化嵌入式推送数据至互联网的过程。答案是可以,那就从PHP表单开始“复习”吧。
【
PHP学习笔记——索引博文
】
2.最简单PHP表单
在这里创建一个welcome.html的文件,文件内容如下:
[html]
view plain
copy
<
html
>
<
body
>
<
form
action="welcome.php"
method="post"
>
Name:
<
input
type="text"
name="name"
/>
Age:
<
input
type="text"
name="age"
/>
<
input
type="submit"
/>
</
form
>
</
body
>
</
html
>
在这个非常简单的HTML文件中具有两个文本框,两个的名称分别是name和age,该表单的提交方法为POST,welcome.php会处理该提交内容,或通过网页显示或通过存储至数据库。
再创建一个welcome.php的文件,文件内容如下:
[php]
view plain
copy
<html>
<body>
Welcome <?php echo
$_POST["name"]; ?>.<br />
You are <?php echo
$_POST["age"]; ?> years old.
</body>
</html>
提交的表单有两个内容,一个名称为name另一个名称为age。在PHP中可以通过全局数据$_POST["name"]或$_POST["age"]表示,例如$_POST["name"]表示xukai,$_POST["age"]表示26。运行一下welcome.html那么整个过程和结果也就一目了然了。(但是这之前需要安装apache和PHP,如果是windows平台的话可以使用wampserver这样的集成安装包)。
图1 welcome.html
图2 welcome.php执行结果
3.使用cURL提交表单
如果只运行welcome.html,查看welcome.php的运行结果那么整个表单处理过程依然显得非常模糊。此时可使用cURL工具手动提交表单,这相当于代替welcome.html直接提交表单内容。提交表单需要通过HTTP协议的POST方法,使用cURL工具时默认为GET方法,使用其他方法需要使用-X修饰符,之后跟上HTTP方法名称,例如POST或PUT。另外表单的内容通过&连接,例如name=xukai&age=26。cURL命令具体内容
curl -X POST --data "name=xukai&age=26"
http://localhost/welcome.php
执行结果:
[plain]
view plain
copy
<html>
<body>
Welcome xukai.<br />
You are 26 years old.
</body>
</html>
4.HTTP通信抓包分析
通过cURL工具可以熟悉表单的提交方法,但是除了表单内容之外还包括了HTTP请求头和HTTP请求属性等部分。通过网络抓包工具,HTTP请求和响应的具体内容如下:
<Http请求>
[plain]
view plain
copy
POST /welcome.php HTTP/1.1
User-Agent: curl/7.29.0
Host: localhost
Accept: */*
Content-Length: 17
Content-Type: application/x-www-form-urlencoded
name=xukai&age=26
<Http响应>
[plain]
view plain
copy
HTTP/1.1 200 OK
Date: Wed, 18 Dec 2013 13:49:15 GMT
Server: Apache/2.4.4 (Win32) PHP/5.4.16
X-Powered-By: PHP/5.4.16
Content-Length: 81
Content-Type: text/html
<html>
<body>
Welcome xukai.<br />
You are 26 years old.
</body>
</html>
在HTTP请求中
POST /welcome.php HTTP/1.1中POST为请求方法,/welcome.php为文件地址,HTTP/1.1为HTTP协议版本编号。User-Agent: curl/7.29.0表示代理器的名称,该属性非必须。Host: localhost为远程主机名称,在这里在localhost意为本机,此处也可以为192.168.1.106或者example.com等合法地址或域名,该属性为必须。Accept: */*表示接受内容,该属性非必须。Content-Length: 17表示被提交表单的长度,该属性为必须。Content-Type: application/x-www-form-urlencoded表示表单的编码格式,该属性为必须。name=xukai&age=26为表单内容,属于HTTP请求内容部分。HTTP请求属性和HTTP请求内容之间存在一个空行。
在HTTP响应中
HTTP/1.1 200 OK表示请求成功。
5.总结
通过一个简单的例子复习PHP表单技术,通过cURL工具和HTTP抓包工具分析HTTP请求和响应,为MCU提交表单做技术准备。
6.参考博文
【
cURL工具使用
】
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议