Cookie问题

iamhejianke 2007-12-24 11:37:57
用webBrowser登陆网站,如何使Idhttp共用webBrowser的Cookie,读取登陆后的网页?
...全文
151 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
谢谢,如果能详细点就好了

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧