aardio - post、put提交数据简例

本文重点总结:

1、协议头 Content-Length 这一项建议删除。因为提交的数据长度不符,会导致处理失败。(特殊需求的可以自行计算正确值。)

2、json数据,建议用 web.json.stringify() 函数转为文本。因为文本格式不对,会导致处理失败。(特殊需求的可以自己构造为符合要求的文本格式。)

一、post登录示例。

1、根据经验,使用账号密码登录,一般都使用post方式。

2、根据经验,post提交数据的重点,一般是解决以下三个方面的问题:

1、确定目标网址url

2、确定提交的数据格式及内容postdata,如果密码进行了加密,则找出算法。

3、确定来源网址referer

3、解决以上三个问题的方法很多,我推荐对登录页面的提交操作进行数据拦截,以上数据就一目了然。

特别注意:

1、拦截的数据,一般包含headers和data。格式如下:

POST https://www.abc.com/login.jsp HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Referer: https://www.abc.com/login.jsp
Content-Length: 33
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Connection: keep-alive
Accept: */*
Origin: https://www.abc.com
Cookie: terminal=fe45da2b-d872-4fe4-8d45-f2531d1dd045

user=aaaa&pass=123456

2、里面包含了很多信息。一般主要用到以下三项:

1、URL(必须):https://www.abc.com/login.jsp
2、Referer(可选): https://www.abc.com/login.jsp
3、postData(必须):user=aaaa&pass=123456

4、根据数据提交及返回格式的不同,采用不同的aardio库进行提交。

5、简单示例:

    //引用网络库
	import web.rest.jsonLiteClient
	var w = web.rest.jsonLiteClient()
	
	//指定来源地址,可选。部分网站会检查来源地址。
   	w.referer = "https://www.abc.com/login.jsp";

    //提交数据
	var  t = w.post("https://www.abc.com/login.jsp","user=abc&pass=123456");

    //检查登录结果
	if t.msg!="success" return winform.edit2.print(tostring(time.now())++" 登录失败!"); 
	winform.edit2.print(tostring(time.now())++" 登录成功!")

二、put数据操作:

1、原理同上。

2、简易代码如下:

    // 构造协议头
	w.addHeaders = `Referer: https://www.abc.com/member/price/PriceList.jsp
	Origin: https://www.abc.com
	Accept-Language: zh-CN,zh;q=0.9
	Connection: keep-alive
	Accept: application/json, text/javascript, */*; q=0.01
	Sec-Fetch-Mode: cors
	User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)
	Content-Type: application/json
	Sec-Fetch-Site: same-site
	Sec-Fetch-Dest: empty
	Accept-Encoding: gzip, deflate, br`

    // 构造json数组数据
	var putdata = web.json.stringify(jsonRrecords)

    // put提交数据
	t = w.put("https://api.abc.com/portal/chinaPrice/updateAll",putdata)

    // 检查提交结果
	if t.msg!="success" return winform.edit2.print(tostring(time.now())++" 保存失败!"); 
	winform.edit2.print(tostring(time.now())++" 保存成功!")

3、特别注意:

1、因为提交数据需要部分协议头,为了操作方便,或满足个别网站的特殊要求,可将拦截的headers内容及格式进行部分修改后,一同进行提交。

2、重点需要注意的是:Content-Length 这一项,强烈建议直接删除。要么就自己计算正确的数据长度,这比较麻烦。否则可能会提交失败。

3、cookie项酌情处理。如果是登录,一般不会有cookie。如果是登录后的其他操作,可酌情处理。

4、json数组,可以用 web.json.stringify() 函数进行处理,将 json数组数据 转为文本。或者自己构造为符合要求的文本格式,但比较麻烦。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值