找回密码
 加入
搜索
查看: 6692|回复: 11

[IE类操作] microsoft.xmlhttp 如何读取get回来的cookies值

  [复制链接]
发表于 2012-7-3 17:04:16 | 显示全部楼层 |阅读模式
想post登陆路由器,但必须先get得到其网页的cookies值,不知道用$oHTTP.Response的哪个参数能正确读取?以下为源代码

$oHTTP = ObjCreate("microsoft.xmlhttp")
$oHTTP.Open('GET', 'http://192.168.0.1/admin/', False)
$oHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
$oHTTP.setRequestHeader("Host", "192.168.0.1")
$oHTTP.Send()

ConsoleWrite($oHTTP.ResponseBody & @CRLF);有值输出,不是这个
ConsoleWrite($oHTTP.ResponseText & @CRLF);有值输出,不是这个
ConsoleWrite($oHTTP.ResponseXML & @CRLF);无值输出
ConsoleWrite($oHTTP.ResponseStream & @CRLF);无值输出

利用以下代码是能正确读取的:
Local $Url = "http://192.168.0.1"
Local  $oIE = _IECreate ($URL,0)
Local $Obj = _IEDocGetObj($oIE)
Local $Cookie = $Obj.cookie
MsgBox(0,0,$Cookie,3);能正确显示Cookie的值

哪位大侠知道啊?!!
发表于 2012-7-3 19:22:00 | 显示全部楼层

Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
后面用$oHttp.GetResponseHeader("Cookie")

即可获得Cookie,参考: http://msdn.microsoft.com/en-us/library/aa383975(v=vs.85)
 楼主| 发表于 2012-7-4 08:57:08 | 显示全部楼层
回复 2# fpquenya


如果用    $oHTTP = ObjCreate("microsoft.xmlhttp"),就没有办法吗?
 楼主| 发表于 2012-7-4 09:24:02 | 显示全部楼层
回复 3# ljxu


    你的代码($oHTTP.GetResponseHeader("Cookie"))在我这一直出错?

$oHTTP.GetResponseHeader("Date")是正确的
发表于 2012-7-4 10:06:22 | 显示全部楼层
回复 4# ljxu

路由器可以直接登录的啊
http://user:password@192.168.1.1
另外,可以试下这个:

#include <IE.au3>
Local $Url = "http://bbs.winos.cn"
Local $oIE = _IECreate ($URL,0)
Local $Obj = _IEDocGetObj($oIE)
Local $Cookie = $Obj.cookie
MsgBox(0,"Cookie",$Cookie)
;或者 Local $Cookie = $oIE.document.cookie
_IEQuit($oIE)
 楼主| 发表于 2012-7-4 23:40:41 | 显示全部楼层
回复 5# fpquenya

有些路由器是不能直接登录的,比如说我这个

你的说的方法我试过,是可行的,但我想知道用$oHTTP.GetResponseHeader的方法,你知道吗?
发表于 2012-7-5 00:09:02 | 显示全部楼层
回复 7# ljxu

我试了$oHTTP.GetResponseHeader("Cookie")也不行,$oHTTP.GetResponseHeader("Set-Cookie")是可以的,请高手帮忙看看吧
发表于 2012-7-5 03:01:50 | 显示全部楼层
回复 7# ljxu

关于 XMLHTTP:获取完整HEADER, 它有个方法: getAllResponseHeaders
AU3语法: $oHTTP.getAllResponseHeaders()

获取单独HEADER, 须指明 HEADER '类型':
比如: $oHTTP.GetResponseHeader("Set-Cookie")
还有: $oHTTP.GetResponseHeader("Content-Type") 等等,
请获取完整HEADER并查看,  就知道全部的HEADER有哪些了.

下面是一篇关于 XMLHTTP 对象及属性的非常好的中文解说
http://www.blueidea.com/tech/web/2008/5329.asp

评分

参与人数 1金钱 +10 收起 理由
xms77 + 10 谢谢分享,学习一下XMLHTTP

查看全部评分

发表于 2012-7-5 03:09:58 | 显示全部楼层
回复 4# ljxu


   xmlhttp 的 HEADER 中有 Date, 没有 Cookie, 只有 Set-Cookie !
这就是出错与正确的原因!

自己看吧, 下面是 度娘 的全部 HEADER, 注意每行 " : " 前面的单词.
Date: Wed, 04 Jul 2012 19:05:02 GMT
Server: BWS/1.0
Content-Type: text/html;charset=gbk
Cache-Control: private
Expires: Wed, 04 Jul 2012 19:05:02 GMT
Set-Cookie: BDRCVFR[PILHzeay02t]=aeXf-1x8UdYcs; path=/; domain=www.baidu.com
Connection: Keep-Alive
 楼主| 发表于 2012-7-6 08:48:10 | 显示全部楼层
回复 8# fpquenya

谢谢你的帮助,问题解决了,方法在楼下。
 楼主| 发表于 2012-7-6 08:48:48 | 显示全部楼层
回复 10# user3000


    谢谢你的帮助,又学到了新的知识啊
发表于 2012-7-6 15:50:20 | 显示全部楼层
回复 9# user3000

学习了,多谢分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-26 21:15 , Processed in 0.082208 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表