WebLoad 对于模拟一个HTTP 请求,一般都是 由以下三部分组成,并把这三部分包在一个Transaction里(从BeginTransation 到 EndTransaction 为止):
1. request header or cookie
a) request header, 即发送HTTP请求时所附带的头部,一般Post请求需要头部为多,由以下方法构成
wlHttp.Header["key"] = "value"
例子,RPS2 项目的请求都需要添加一个 特殊头部 "When calling RPS2, for each call, you must also include a http header with x-product-code:retail_phoenix", 所以这个请求头部的是:
wlHttp.Header["x-product-code"] = "retail_phoenix"
b) cookie,有时候发送HTTP 请求需要包含一个登陆或者是用户信息的cookie,而当带有cookie的请求时WL 不能录制,需要自己手动添加代码, 添加cookie的方法是wlCookie.Set(name, value, domain, path [, expire])
例子,RPS 需要的请求需要包含一个 mstar=V63LP207K0564O7267263N3512P365O6KOL18OL2L034KL02820 的cookie,则调用cookie的方法是:
wlCookie.Set("mstar", "V63LP207K0564O7267263N3512P365O6KOL18OL2L034KL02820", "http://scdispqaweb.morningstar.com","/", ""),
其中cookie可以放在一个txt的文件中,然后参数化,则有
wlCookie.Set("mstar", dataMap_cookie.getValue(), "http://scdispqaweb.morningstar.com","/", "")
Note: 曾经犯过一个错,就是把cookie放在request header里,即使用wlHttp.Header["cookie"] = "mstar=...."
2. request content ( and content type )
发送HTTP 请求,特别是Post请求,一般都要发送一些请求内容或者提交一些表单。WL 提供三种提交表单或发送请求体的方法
a). FormData
FormData 属于wlHttp对象的属性,使用的格式可以有两种,wlHttp.FormData["key"] = "value" or wlHttp.FormData.key = "value"
例子,wlHttp.FormData["Login"] = "tom.weng@morningstar.com"
wlHttp.FormData["Password"] = "Mstar123"
or
wlHttp.FormData.Login = "tom.weng@morningstar.com"
wlHttp.FormData.Password = "Mstar123"
Note: the difference is that The wlHttp.FormData["key"] notation also supports spaces in the name,
for example, wlHttp.FormData["First Name"].
b). Data
This method is used to submit a string that is not a standard HTML form and cannot be represented by
FormData. It has two subfields:
Data.Type – The MIME type for the submission
Data.Value – The string to submit
和 FormData 一样,它也可以有两种表达方式:
wlHttp.Data.Type = "value";
wlHttp.Data.Value = "value";
或者
wlHttp.Data["Type"] = "value"
wlHttp.Data["Value"] = "value"
例子:wlHttp.Data.Type = "application/x-www-form-urlencoded"
wlHttp.Data.Value = "email=pms.advisor9@morningstar.com&strPassword=Mstar123&Login=1&rbtn=btnEmail&rnd=(new Random()).NextDouble().ToString()&ProductCode=AWSOE&ProductID=AWSOE"
或者
wlHttp.Data["Type"] = "application/json; charset=UTF-8"
wlHttp.Data["Value"] = "{\"Name\": \"tom weng\", \"Number\": 1024, \"Title\": \"QA Engineer\" }"
注意: 当用Data 方面时,Value 属性是必须的,即必须有 Data["Value"] 或 Data.Value
c). DataFile
DataFile 的作用主要是: 当Post 请求的 请求体内容太大的话,为方便脚本的维护,把请求内容放到一个外部文件中,然后通过DataFile 这个方法导入外部文件。而不需把整一大段Post请求内容放到脚本里。
同样的,DataFile也支持两种表达方式:
wlHttp.DataFile.Type = "value";
wlHttp.DataFile.Filename = "value"
or
wlHttp.DataFile["Type"] = "value"; wlHttp.DataFile["Filename"] = "value"
例子:
wlHttp.Header["X-API-UserId"] = "d5b04f19-e16b-4963-a6c1-faac4624fb48"
wlHttp.Header["X-API-ProductId"] = "Direct"
//wlHttp.DataFile.Type = "application/json; charset=UTF-8"
//wlHttp.DataFile.Filename = "D:\\Load Test\\Tom\\DataFileTest\\datafile.txt"
wlHttp.DataFile["Type"] = "application/json; charset=UTF-8"
wlHttp.DataFile["Filename"] = "D:\\Load Test\\Tom\\DataFileTest\\datafile.txt"
wlHttp.Post("http://api-data-stg.morningstar.com/v2/lists")
上面的例子,我把Post的请求内容(Json格式)放到了一个叫 datafile 的 txt 文件里,然后通过 wlHttp.DataFile.Filename 这个方法把该文件引进来。
ContentType:
Description : Specifies the content type of the HTTP request.
Note: content type 可做作为 request header field, 也可以作为wlHttp的属性单独来使用
wlHttp.Header["Content-type"] = "application/x-amf"
wlHttp.ContentType = "application/x-www-form-urlencoded"
3. request
一般HTTP 请求为:Get,Post,Put, Delete.... WL 相应提供了这几种方法,也是属于wlHttp 对象
wlHttp.Get("URL");
wlHttp.Post("URL");
wlHttp.Put("URL");
wlHttp.Delete("URL")
例子:
wlHttp.Get("http://www.baidu.com")
wlHttp.Post("http://mcsvqaap-cloud.morningstar.com/DataService/api/v2/entity/columnsets")
wlHttp.Put("http://api-data-stg.morningstar.com/v2/columnSets/" + IDMap_ColumnSet_ID.getValue())
wlHttp.Delete("http://api-data-stg.morningstar.com/v2/columnSets/" + corr_Morningstar_columnsetID_3)
validation
最后是验证
- Shell脚本exit用法与区别
在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出主脚本/当前脚本/当前函数,那么Exit与return的用法与区别是什么呢? 下面先使用Exit举个简单例子,脚本内容如下 # ...
- shell脚本基本用法
下面是一些简单常用的脚本,工作中可能会用到,记录一下. #!/usr/bin/env bash #变量[=两边不要有空格], 在使用的时候需要用${变量名} 或者是$变量名 name="sa ...
- 一个WebLoad 脚本范例
//initial the Agenda function InitAgenda(){ wlGlobals.SaveHeaders = true; wlGlobals.SaveSour ...
- php类似shell脚本的用法
参考: http://www.cnblogs.com/myjavawork/articles/1869205.html php还可以用于类似于shell脚本,哈哈,对编程语言和对整个计算机系统的认识又 ...
- expect脚本语言用法示例
#!/usr/bin/expect set hostname [lindex $argv 0] set username [lindex $argv 1] set passwd [lindex $ar ...
- SQL约束脚本的用法
1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码 要对一个列加主键,列名为id,表名为emp 格式为:a ...
- paramiko远程控制host执行脚本的用法
import paramiko ssh = paramiko.SSHClient() print ssh.get_host_keys() ssh.set_missing_host_key_policy ...
- Bash 脚本进阶,经典用法及其案例
前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...
- mysql+keepalived主从切换脚本 转
Keepalived MySQL故障自动切换脚本 MySQL架构为master-slave(主从),master故障自动切换到slave上.当然也可以设置为双master,但这里有个弊端:就是当主 ...
随机推荐
- [完美方案+无懈可击]ubuntu 14.04(LTS) + GTX 980Ti显卡配置
安装好系统之后出现的问题: 1 不能上网:后来通过删除链接新建一个以太网链接(自动DHCP)重启莫名其妙就好使了. 2 分辨率只有两个:1024x ? 和 800x600. 分辨率低到让人头痛.通过查 ...
- 多功能Markdown编辑器MarkdownPad 2的下载、安装和初步使用步骤(图文详解)(博主推荐)
不多说,直接上干货! MarkdownPad 是什么? 一.MarkdownPad 2的下载 http://markdownpad.com/download/markdownpad2-setup. ...
- 如何成为一名优秀的 iOS 开发工程师
如果你是一位专业的iOS开发工程师,你应该为自己感到自豪.因为你能在强大的iOS系统下,一展身手实现自己和他人的想法,这是一件令人无比激动的事情. 作为一名iOS开发工程师,你一定想成为行业的佼佼者. ...
- struts 2.5 There is no Action mapped for namespace [/] and action name [user_find] associated with context path [/struts2_crm].
遇到了这个错误. There is no Action mapped for namespace [/] and action name [user_find] associated with con ...
- Cannot load php5apache2_4.dll into server 问题的解决方法
解决方法,重新安装 VC9或 VC11 试试,或者全部安装VC9 VC11 注意:如果下载的 php5.5为32位版本, 那么安装的vc9或VC11 也必须是32位版本. 如果下 ...
- js控制页面跳转,清缓存,强制刷新页面
单看标题,必定满脸蒙13. 其实,想表达的仅仅是,在js中通过window.location.href控制页面跳转时,有时会跳转至缓存页面,并没有真正去请求要跳转的地址,导致页面数据未能及时加载刷新. ...
- 镜像中的 Everything, GnomeLive ,KdeLive ,livecd ,NetInstall的区别?
everything: 对完整版安装盘的软件进行补充,集成所有软件 GnomeLive , GNOME桌面版 KdeLive , KDE桌面版 livecd 光盘上运行的系统 ,NetInstall ...
- PHP网络协议相关考点
HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. HTTP状态码主要有5种,代表5种不同类型的响应: 1xx:信息性状态码,代表接 ...
- Android(java)学习笔记190:ContentProvider使用之学习ContentProvider(内容提供者)的目的
1. 使用ContentProvider,把应用程序私有的数据暴露给别的应用程序,让别的应用程序完成对自己私有的数据库数据的增删改查的操作. 2. ContentProvider的应用场景: 获取手机 ...
- python根据日期返回星期
import time #定义:timedate为时间戳def formattime(timedate,s="%Y-%m-%d %H:%M:%S"): return ...