Cookie问题

iamhejianke 2007-12-24 11:37:57
用webBrowser登陆网站,如何使Idhttp共用webBrowser的Cookie,读取登陆后的网页?
...全文
105 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小风哥哥 2007-12-24
获取本机cookie可以使用api InternetGetCookie(这个api 就不说了吧,比较简单) 获取到cookie串(假设是CookieStr)后添加到idhttp的头里面去, 添加方式:
IdHTTP1.Request.ExtraHeaders.Add('cookie: ' + CookieStr); // 其实就是构造http请求头
然后head或者get或者post随便你了
回复
liuhengwinner 2007-12-24
关注,我以前也碰到过这个问题,没解决!
回复
小风哥哥 2007-12-24
我用的indy版本比较老,9.0 10.0或许没有要这个属性,但是应该提供了更方便的属性的。比如IdCookie, IdCookieManager,这两个单元我用的indy是没有的,你去看下可能有你想要的.无论怎样都是在http请求头里添加cookie串.
回复
小风哥哥 2007-12-24
你没登录过CSDN么? 只有本地有这个cookie才可以的
回复
iamhejianke 2007-12-24

无 IdHTTP1.Request.ExtraHeaders.Add('cookie: ' + cookieStr); 这个函数
只找到IdHTTP1.Request.RawHeaders.Add

不成功,得到的是登陆页面代码
回复
iamhejianke 2007-12-24
很多谢,我试验下
回复
小风哥哥 2007-12-24
.......
拿csdn的下载地址做例:

procedure TForm1.Button1Click(Sender: TObject);
var
aHTTPSourUrl, cookieStr: string;
cookieLength: DWORD;
aFileStream: TFileStream;
begin
cookieLength := 1024*4;// 4K最大
SetLength(cookieStr, cookieLength);
aHTTPSourUrl := 'http://d.download.csdn.net/filedown/aHR0cDovL2RsMi5jc2RuLm5ldC9kb3duNC8yMDA3MTIyNC8yNDEyNTI1OTc4My5leGU=!315514';
InternetGetCookie(PChar(aHTTPSourUrl), nil, PChar(cookieStr), cookieLength);// 这个东西在WinInet里
cookieStr := string(PChar(cookieStr));
IdHTTP1.HandleRedirects := True;
IdHTTP1.Request.ExtraHeaders.Add('cookie: ' + cookieStr);
aFileStream := TFileStream.Create('文件名字自己获取吧.不知道是什么', fmCreate);
try
IdHTTP1.Get(aHTTPSourUrl, aFileStream);
except
// 这个处理自己弄吧
end;
aFileStream.Free();
end;
回复
iamhejianke 2007-12-24
谢谢,如果能详细点就好了
回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1565

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告