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

[网络通信] [已解决]请教winhttp如何获取响应头信息

  [复制链接]
发表于 2011-11-4 13:20:03 | 显示全部楼层 |阅读模式
本帖最后由 35888894 于 2011-11-5 14:30 编辑

如图,捕获的请求头文件中含有Location信息

通过$sHeader =_WinHttpQueryHeaders($hRequest_E)函数只能获取部分头信息

请问如何才能获取到Location信息,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-4 14:02:53 | 显示全部楼层
表示不懂
 楼主| 发表于 2011-11-4 14:30:39 | 显示全部楼层
通过实验,可以证明,如果进行多次跳转的话,返回的头为跳转后的信息头,那么新问题来了,如何获得没跳转以前的信息头呢?
 楼主| 发表于 2011-11-4 15:43:03 | 显示全部楼层
地址是:http://dev.5cfan.com/go.php
#include-once
#include "WinHttp.au3"
#include <array.au3>
#include <IE.au3>
; Register Callback function
;创建一个HTTP链接
Global  $hOpen = _WinHttpOpen()
        If @error Then
                        MsgBox(48, "Error", "Error initializing the usage of WinHTTP functions.")
                        Exit 1
                EndIf

;链接至服务器
Global $cookie="sa=1; sb=2"
Global  $hConnect = _WinHttpConnect($hOpen, "dev.5cfan.com")
Global $sendmessage=""
Global  $sReturned= WInHttpGetMessage($hConnect,"GET","/go.php",$sendmessage,$cookie)

MsgBox(0,"",$sReturned)
_WinHttpCloseHandle($hOpen)



;作用:获取信息
;链接,类型平post还是get,Page,发送的信息;cookie
Func WInHttpGetMessage($Connect,$Type,$Page,$message="",$cookie="")
Local  $hRequest_E = _WinHttpOpenRequest($Connect, $Type,$Page)
Local $sHeader=""

If $cookie<>"" Then
                _WinHttpAddRequestHeaders($hRequest_E, "Cookie:"&$cookie)        ;带着cookie走
        EndIf


_WinHttpSendRequest($hRequest_E, "Content-Type: application/x-www-form-urlencoded",$message)

_WinHttpReceiveResponse($hRequest_E)

$sHeader = _WinHttpQueryHeaders($hRequest_E,43)

MsgBox(0,"",$sHeader)


Local $sReturned_V
If _WinHttpQueryDataAvailable($hRequest_E) Then ; if there is data
    Do
        $sReturned_V &= _WinHttpReadData($hRequest_E,1)
    Until @error
EndIf


_WinHttpCloseHandle($hRequest_E)
Return $sReturned_V
EndFunc
返回的结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-11-4 15:43:55 | 显示全部楼层
希望高手给予解答,谢谢
发表于 2011-11-4 16:14:47 | 显示全部楼层
偶的这个版本没有winhttp
发表于 2011-11-4 17:21:00 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2011-11-4 17:31 编辑

你的问题和我的应该差不多吧,我不是用winhttp,我是用xmlhttp
$xmlhttp.getAllResponseHeaders

用getAllResponseHeaders无法获取到Cookie信息,郁闷啊

问了几个人也没解决,可能是跳转次数太多的原因吧.



只有在第一次提交数据时,能获取到Cookie,但是最终登陆成后功的Cookie并不是这个,而且获取不到.

下面这个就登陆成功后,没有Cookie信息...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-11-4 17:39:07 | 显示全部楼层
我的意思是获取Location,因为只有获得了Location才能生成后续的请求地址
PS :$xmlhttp.getAllResponseHeaders
也不是很好用,,,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-4 18:50:25 | 显示全部楼层
“ _WinHTTP_GetRespond ... 完整的HTTP传输过程[2011-2-19(代理服务器)]”这个udf里面有禁用重定向,。。。具体的我就不太清楚了,,,,看看有没有用吧
发表于 2011-11-4 19:19:41 | 显示全部楼层
xmlhttp自带Cookies处理功能 不需要用户提供Cookies信息 对象会自己处理,如果添加了Cookies相关header,那么对象就会使用用户自定义Cookies了
发表于 2011-11-5 11:12:30 | 显示全部楼层
回复 10# komaau3

    呵呵,谢谢,回头我再试试.....
 楼主| 发表于 2011-11-5 12:00:54 | 显示全部楼层
搞定了,添加一段代码即可...
_WinHttpSetOption($hRequest_E,$WINHTTP_OPTION_DISABLE_FEATURE,$WINHTTP_DISABLE_REDIRECTS)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-6 02:59 , Processed in 0.079217 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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