IdHTTP 组件怎么获得cookie?
RT
[解决办法]
这是我以前写过的一段程序,供参考:
String Cookie,CookieList;
for(i=0;i<http->Response->ExtraHeaders->Count;i++)
{
if (UpperCase(http->Response->ExtraHeaders->Strings[i].SubString(1,10)) =="SET-COOKIE")
{
Cookie =Trim(http->Response->ExtraHeaders->Strings[i].SubString(12,1000));
Cookie =Cookie.SubString(1,Cookie.Pos(";"));
CookieList+=Cookie;
Memo1->Lines->Add(Cookie);
}
}
[解决办法]
几年前写的一个函数,FileName这个文件就是NMHTTP空间POST后,生成的head.txt文件。
好像是设置NMHTTP->InputFileMode = false;NMHTTP->OutputFileMode = true;后可以生产这个http头文件。函数返回的字符串可以直接通过NMHTTP->HeaderInfo->Cookie = s_cookie;设置下一次的POST的cookie。
AnsiString GetCookie(AnsiString FileName)
{
AnsiString sHead;
TStringList *line = new TStringList();
TStringList *ss=new TStringList;
line->LoadFromFile(FileName);//打开这个文本文件
AnsiString s1 = "Set-Cookie:";
AnsiString s2;
for(int i=0; i<line->Count; i++)
{
s2 = line->Strings[i];
if(s2.Pos(s1)!=0)//找到
{
//s2就是所在行的整行文本
s2 = s2.Delete(1, 11);
ss->CommaText=s2;
sHead += ss->Strings[0];
}
else
{
continue;
}
}
sHead.Trim();
delete line;
delete ss;
return sHead;
//TODO: Add your source code here
}
[解决办法]
IdHTTP+IdCookieManager
用IdHTTP访问网站,会自动往IdCookieManager添加获得的有效Cookie.