PHP模拟发送POST请求之二、用PHP和JS处理URL信息
明白了HTTP请求的头信息后,我们还需要对请求地址有所了解。再者,HTTP GET请求是靠URL实现的,所以了解URL的构造,处理URL的重要性不言而喻。
在PHP中我们用parse_url()函数来处理URL信息。
其函数原型如下:
array parse_url ( string $url [,URL_COSTANT])
本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。
对严重不合格的 URL,parse_url() 可能会返回 FALSE 并发出 E_WARNING。否则会返回一个关联数组,其组成部分为(至少有一个)
其正确的返回值如下:
scheme http 协议信息 host 主机信息 port 端口号 user 用户名 pass 密码 path 站内路径 query 在问号 ? 之后的查询信息 fragment 在散列符号 # 之后 锚点信息 Hash信息
下面是一个典型的URL字符串,我们对其用parse_url()解析,并输出其结果数组。
$url='https://zbs:mypass@www.baidu.com:8080/home/index.html?gender=male&write=code#anchor'; $arr=parse_url($url); array (size=8) 'scheme' => string 'https' 'host' => string 'www.baidu.com' 'port' => int 8080 'user' => string 'zbs' 'pass' => string 'mypass' 'path' => string '/home/index.html' 'query' => string 'gender=male&write=code' 'fragment' => string 'anchor'
另外,我们还可以对第二个参数赋值,指定要返回的URL部分,对应的URL_CONST取值如下:
scheme:PHP_URL_SCHEME,
host:PHP_URL_HOST,
port:PHP_URL_PORT,
user:PHP_URL_USER,
pass:PHP_URL_PASS,
path:PHP_URL_PATH,
query:PHP_URL_QUERY,
fragment:PHP_URL_FRAGMENT.
例如我们要指定返回地址的查询字段信息:
$url='https://zbs:mypass@www.baidu.com:8080/home/index.html?gender=male&write=code#anchor'; $arr=parse_url($url,PHP_URL_QUERY);//string '/home/index.html
理解了如何拆分URL信息后,我们也更需要学会拼合URL信息,拼合URL信息有一个专门的函数http_build_url(),但此函数因其处理繁琐,一般较少使用,我们常用字符串来拼合URL,在处理较多的查询信息(query_string)时,我们会用http_build_query()函数。
http_build_query()函数能帮我们将一个关联数组快速拼合成一个查询字符串,它甚至可以将一个对象分析拼合为一个查询字符串,但要注意,它只能保留修饰符为"public"的"属性",其余信息将会被舍弃。
例:
$info=['run'=>'10km','eat'=>'3kg'];
var_dump(http_build_query($info));//string 'run=10km&eat=3kg'
class Msg{
public $attr_public="value_public";
protected $attr_protected="value_protected";
private $attr_private="value_private";
function foo(){
echo "foo";
}
}
$msg=new Msg();
var_dump(http_build_query($msg));//string 'attr_public=value_public'
另:JS获取当前url信息:
Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问,它包含了有关当前 URL 的信息。
Location 对象属性
属性 描述
hash URL锚点信息
host 主机名和当前 URL 的端口号
hostname 当前URL的主机名
href 完整的URL
pathname 当前URL的路径部分
port 当前URL的端口号
protocol 当前URL的协议
search 查询字符串
PHP模拟发送POST请求之二、用PHP和JS处理URL信息的更多相关文章
- 模拟发送http请求的工具推荐
做网站开发时,经常需要发送请求来测试自己的代码是否OK,这时候模拟发送http请求的工具就起到了很大的作用.特别是需要在请求带header时就更加的有必要使用工具.下面推荐的工具有的是基于系统开发的程 ...
- PHP模拟发送POST请求之五curl基本使用和多线程优化
今天来介绍PHP模拟发送POST请求的重型武器——cURL函数库的使用和其多线程的优化方法. 说起cURL函数,可谓是老生常谈,但网上许多资料都在关键部分语焉不详,列出一大堆手册上的东西,搞得我入门时 ...
- PHP模拟发送POST请求之一、HTTP协议头部解析
WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其基于URL的直观,易被我们了解,可POST请求因其信息的隐蔽,在安全的同时,也给开发者们模拟发送带来了麻烦.接下来的几篇博文中,我 ...
- WebClient模拟发送Post请求
WebClient模拟发送Post请求方法: /// <summary> /// 模拟post请求 /// </summary> /// <param name=&quo ...
- jmeter测试TCP服务器/模拟发送TCP请求
jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响应. jmeter模拟发送TCP请求的方法: 1. ...
- jmeter ---测试TCP服务器/模拟发送TCP请求
jmeter测试TCP服务器/模拟发送TCP请求 jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响 ...
- jmeter测试TCP服务器/模拟发送TCP请求 设置16进制发送(转)
转载留存:http://blog.sina.com.cn/s/blog_46d0362d0102v8ii.html 性能测试需要模拟多种场景,经常受制于资源限制,没办法建立贴近实际部署环境的场景.因而 ...
- PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息
了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器.Windows内置命令Telnet可以帮助我们发送简单的HTTP请求. 并且TELNET是一个特别灵活的工具 ...
- Fiddler模拟发送post请求
fiddler在进行接口测试时,会模拟post请求,发送不同的请求参数,返回不同的结果,今天我们就来分享一下,怎么用Fiddler工具模拟post请求: 打开Fiddler工具,在右侧点击“compo ...
随机推荐
- SystemTap了解
SystemTrap是监控和跟踪运行中的Linux内核操作的动态方法. http://www.ibm.com/developerworks/cn/linux/l-systemtap/ 使用System ...
- SQL SERVER2008及以上版本数据库自动备份的三种方法
方法一:创建一个维护计划对数据库进行备份 方法二:创建一个SQL作业对数据库进行备份 方法三:创建WINDOWS任务计划对数据库进行备份 方法一与方法二其实原理基本相同,都必需开启SQL代理服务,都会 ...
- java:[1,1] 需要class, interface或enum
状态: cmd编译.java文件时报异常:java:[1,1] 需要class, interface或enum异常原因: 主要原因是java文件的编码问题. 在中文操作系统中,使用一贯的"j ...
- Websocket 概述
WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). [[ from websocket是什么原理? ]] 一.WebSocke ...
- 设计模式--外观(Facade)模式
Insus.NET在去年有写过一篇<软件研发公司,外观设计模式(Facade)>http://www.cnblogs.com/insus/archive/2013/02/27/293606 ...
- sencha gridpanel checkbox 复选框的勾选 以及和单机行冲突
gridpanel显示checkbox: 添加SelectionModel为Checkbox Selection Model { xtype: 'gridpanel', id: 'Grid1', he ...
- Array(数组)与Json String (Json字符串) 的相互转换
1.Array转换成Json String function jsonToString(arr) { var s = ""; ...
- 使用PowerQuery操作OData数据
Excel是我们耳熟的办公软件.PowerQuery是一个允许连接多种数据源的Excel插件.它能从一个网页上智能查询数据.使用PowerQuery能合并数据集使用join,merg ...
- mybatis 下划线转驼峰配置
一直以来,在sqlmap文件中,对于数据库中的下划线字段转驼峰,我们都是通过resultmap来做的,如下: <resultMap id="ISTableStatistics" ...
- [Tool] 透过PowerPoint Online在部落格文章里内嵌简报
[Tool] 透过PowerPoint Online在部落格文章里内嵌简报 前言 讲课的时候,用PowerPoint做简报,好像已经成了讲课的惯例.而在课后,将课堂简报整理成部落格的文章,如果单纯是在 ...