ljxu 发表于 2012-7-3 17:04:16

microsoft.xmlhttp 如何读取get回来的cookies值

想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的值

哪位大侠知道啊?!!

fpquenya 发表于 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)

ljxu 发表于 2012-7-4 08:57:08

回复 2# fpquenya


如果用    $oHTTP = ObjCreate("microsoft.xmlhttp"),就没有办法吗?

ljxu 发表于 2012-7-4 09:24:02

回复 3# ljxu


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

$oHTTP.GetResponseHeader("Date")是正确的

fpquenya 发表于 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)

ljxu 发表于 2012-7-4 23:40:41

回复 5# fpquenya

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

你的说的方法我试过,是可行的,但我想知道用$oHTTP.GetResponseHeader的方法,你知道吗?

fpquenya 发表于 2012-7-5 00:09:02

回复 7# ljxu

我试了$oHTTP.GetResponseHeader("Cookie")也不行,$oHTTP.GetResponseHeader("Set-Cookie")是可以的,请高手帮忙看看吧

user3000 发表于 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

user3000 发表于 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=aeXf-1x8UdYcs; path=/; domain=www.baidu.com
Connection: Keep-Alive

ljxu 发表于 2012-7-6 08:48:10

回复 8# fpquenya

谢谢你的帮助,问题解决了,方法在楼下。

ljxu 发表于 2012-7-6 08:48:48

回复 10# user3000


    谢谢你的帮助,又学到了新的知识啊{:face (356):}

fpquenya 发表于 2012-7-6 15:50:20

回复 9# user3000

学习了,多谢分享
页: [1]
查看完整版本: microsoft.xmlhttp 如何读取get回来的cookies值