上节课讲了winhttp对象的一个GET方式访问
这节课讲一下winhttp对象的POST方式访问和取出访问后的Cookie
因为winhttp不像XML一样可以自己管理Cookie,winhttp没有办法自己管理Cookie,我们只能自己管理。
--------------------------------------------------------------------------------
winhttp的POST访问其实跟GET访问差不多,修改一下方法就可以了,我们这节课主要就是讲取Cookie的。
这是一个GET方式的访问
而POST方式的访问,只要opne的时候,GET变成POST,最后Send的时候加上POST数据即可。这里以检测网易邮箱是否注册为例
这样就是一个POST方式的访问。
--------------------------------------------------------------------------------
那么访问之后我们应该如何取出Cookie
这里有两种方法。
一种是取出单条的Cookie,一种是取出所有的返回协议头,然后再经过处理得到完整Cookie
取出返回协议头的写法是读文本属性,然后属性名称就是GetAllResponseHeaders。
然后加一个调试输出,便于我们看他返回的结果
然后返回就是下面这样
01.Date: Thu, 18 Jul 2013 05:03:30 GMT
02.Server: BWS/1.0
03.Content-Length: 10377
04.Content-Type: text/html;charset=utf-8
05.Cache-Control: private
06.BDPAGETYPE: 1
07.BDUSERID: 0
08.BDQID: 0xd69f8600003f2806
09.Set-Cookie: BDSVRTM=21; path=/
10.Set-Cookie: BAIDUID=5B6FEB162A31E75C2861B403A43E6414:FG=1;
expires=Thu, 18-Jul-43 05:03:29 GMT; path=/; domain=.baidu.com
11.Set-Cookie: BDRCVFR[_HRd0mn9IK_]=aeXf-1x8UdYcs; path=/;
domain=www.baidu.com
12.Expires: Thu, 18 Jul 2013 05:03:30 GMT
13.P3P: CP=" OTI DSP COR IVA OUR IND COM "
14.Connection: Keep-Alive
复制代码可以看到有三条Cookie,实际上返回的Cookie就是 BDSVRTM=21; BAIDUID=5B6FEB162A31E75C2861B403A43E6414:FG=1:
BDRCVFR[_HRd0mn9IK_]=aeXf-1x8UdYcs
但是他这里只会给我们返回所有的协议头,所以我们还要自己经过处理才能得到返回的Cookie。
这里由于是易语言的基础知识,我要讲起来会比较麻烦,所以这里我直接写好大家看一下吧,不用正则,直接用分割就行,当然,你用正则的话更好。
在这里顺便说一下,我只会讲POST相关的内容,易语言的基础知识你可以去看书,或者去百度看教程都可以。因为我再讲基础的话,就太浪费时间了。
那么处理过程就是这样
思路很简单,就是先分割,然后如果找到"Set-Cookie",就把"Set-Cookie
"和"; "中间的内容取出来,再叠加一起就可以了。
这样就是取出来整个返回Cookie。
取出单挑Cookie的写法就比较简单。
也是读文本属性,属性名称为:GetResponseHeader,参考数据为:Set-Cookie:。
但是这种写法只能取出来第一条Cookie,没有办法取出剩下的Cookie,所以我们取Cookie的时候都是用的GetAllResponseHeaders,再做处理。
然而这种取单条的也不是没有用处,比如我们要取出跳转地址,也就是Location的时候,就是用的这种方法。
--------------------------------------------------------------------------------