post,不管是什么语言,只要接触到了后期对这个名词都一定不会陌生,当你如果只是个新手的话,你可能就不知道是什么了。
post简单来讲,就是向服务器发送数据的一个过程,或者说是一个方法。在软件开中常被用于提交验证码和登录注册等方面。
由于本文会将post深入的分析一遍,所以可能会比较长,如果你认为你没有耐心看下去请自行跳到下面看实列或者看手册中有关的教程。
基础知识讲解
首先,我们先看一下下面的html代码,不管你能不能看懂都没有关系,总之先看一遍。
<form action="check.php" method="get">
<input type="text" name="user">
<input type="password" name="pw">
<input type="submit" value="提交">
</form>
上面的代码其实就是一个简易的html表单了,如果放入浏览器中执行它会显示出两个编辑框和一个提交按钮。
首先我们来看第一行,也就是这个form的表头部分
<form action="check.php" method="get">
在这里我们可以看到它声明了两个参数,分别为action和method
这两个参数中,action的值所指向的是发送数据后接受数据的地方,method的值代表的是数据提交的方法,它有两个可选值,分别是get和post(只能也必须填这两者中的一个)
当然,你也可能会看到这<form>里参数是空着的或者只填了一项甚至什么都没填,遇到这种情况你不要慌,这不是你的问题也不是我的问题,而是那个人使用了表单的默认值。
action的默认值是本页面(也就是数据没有发到别的地方去),method的默认值是get,至于get和post有什么区别,下面再讲。
现在我们看下面的两行
<input type="text" name="user">
<input type="password" name="pw">
这两个其实就是输入框了,type参数代表它的输入类型,text为文本(默认类型),password为密码。但是这对我们提交数据没有任何关系,我们需要关心的是它的name参数。
name参数是一个由编写者自己定下的唯一值,所以这里是什么都不奇怪,我们原样照搬即可,它的作用也很简单,就是告诉服务器你提交的数据中每一项是什么。
在这里记得把name记一下,写代码post的时候会用到
现在我们看最后两行
<input type="submit" value="提交">
</form>
和前面的比起来,这两行反倒显得有些无足轻重了。
在这两行中,第一行的type参数是submit,它告诉浏览器它是一个提交按钮,而接下来的value是它显示的文字。
在我们的post中,本身自己就是一个提交了,可以说完全没有这个按钮什么事。
最后还有一个</form>标签,它只有一个作用,那就是告诉浏览器这个表单已经结束。
在iApp中,我们通常所指的post其实是get方式的数据提交,那么他们有啥区别呢?
区别就在于提交的方式不一样(废话!),其实区别在于get方式会直接把提交的内容放到链接里去,比如给大家当例子的那个点了提交之后就会转跳到xxx.xxx.com/xxx/check.php?user=xxx&pw=xxx
在这里 user=xxx&pw=xxx 就是我们提交上去的数据。
那么post方法呢?你点击之后它也会转跳到 xxx.xxx.com/xxx/check.php? ,但是它后面没有跟东西了。
是不是很好奇它提交的东西上哪里去了?其实它在这个连接发起参数的header里,不过这个你不能直接看到,你要是真想看到的话只能抓包。
和抓包有关的请自行百度2333(*/ω\*)
iApp代码实列
不含自动保存cookie的post-method=get
t()
{
//在这里注意一下,第一个参数是网站连接,第二个才是提交上去的数据,这两者是分开的
hs("http://xxx.xxx.com/xxx/check.php","user=xxx&pw=xxx","utf-8",ok)
syso(ok)
}
会自动保存cookie的post-method=get
t()
{
hs("http://xxx.xxx.com/xxx/check.php","user=xxx&pw=xxx","utf-8"null,true,null,ok)
syso(ok)
}
由于尚未本人尝试过post方法的提交,为了避免误人子弟,在这里就不讲了,大家可以看一下参考资料里的链接和iApp手册关于hs()部分的说明资料
其实我很好奇iApp支不支持这么干,毕竟....我以前设置提交UA都无效......
注意事项
1.注册登录请使用带cookie的方式,否则等于没有提交,带验证码提交的也一样
2.由于post是异步执行,所以请务必注意代码间的时序关系
3.hs返回的是一个提交数据由服务器处理后的网页源码,如果需要判断登录成功等请使用f()判断是否有相应内容的返回
4.如果你使用post方式提交数据成功欢迎在下方评论区和交流群中分享。