[已解决]请教winhttp如何获取响应头信息
本帖最后由 35888894 于 2011-11-5 14:30 编辑如图,捕获的请求头文件中含有Location信息
通过$sHeader =_WinHttpQueryHeaders($hRequest_E)函数只能获取部分头信息
请问如何才能获取到Location信息,谢谢 表示不懂{:face (319):} 通过实验,可以证明,如果进行多次跳转的话,返回的头为跳转后的信息头,那么新问题来了,如何获得没跳转以前的信息头呢? 地址是: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
返回的结果
希望高手给予解答,谢谢 {:face (319):}偶的这个版本没有winhttp 本帖最后由 .個朲綉√ 于 2011-11-4 17:31 编辑
你的问题和我的应该差不多吧,我不是用winhttp,我是用xmlhttp
$xmlhttp.getAllResponseHeaders
用getAllResponseHeaders无法获取到Cookie信息,郁闷啊
问了几个人也没解决,可能是跳转次数太多的原因吧.
只有在第一次提交数据时,能获取到Cookie,但是最终登陆成后功的Cookie并不是这个,而且获取不到.
下面这个就登陆成功后,没有Cookie信息...
我的意思是获取Location,因为只有获得了Location才能生成后续的请求地址
PS :$xmlhttp.getAllResponseHeaders
也不是很好用,,,
“ _WinHTTP_GetRespond ... 完整的HTTP传输过程”这个udf里面有禁用重定向,。。。具体的我就不太清楚了,,,,看看有没有用吧 xmlhttp自带Cookies处理功能 不需要用户提供Cookies信息 对象会自己处理,如果添加了Cookies相关header,那么对象就会使用用户自定义Cookies了 回复 10# komaau3
呵呵,谢谢,回头我再试试..... 搞定了,添加一段代码即可...
_WinHttpSetOption($hRequest_E,$WINHTTP_OPTION_DISABLE_FEATURE,$WINHTTP_DISABLE_REDIRECTS)
页:
[1]