我调用InternetOpen,InternetConnect,HttpOpenRequest,HttpSendRequest这几个API做了个软件验证登录帐号是否正确,每次登录网站前我想清除掉Cookie再登录不用上次登录的Cookie要怎么做呢?function GetWebPage(const URLA,URLB,FTPostQuery:string):string;
var
Session,
hConnect,hRequest:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
AcceptType:LPStr;
TOPA:String;
begin
Session:=InternetOpen('',0,niL,niL,0);
hConnect := InternetConnect(Session,Pchar(URLA),80, nil, nil,INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PChar('Accept: */*');
hRequest := HttpOpenRequest(hConnect, 'POST',PChar(URLB), 'HTTP/1.0',nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
//----------------------------------------------------------
TOPA:='Content-Type: application/x-www-form-urlencoded';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Accept-Language: zh-cn';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Referer: http://www.163.com';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
//----------------------------------------------------------
HttpSendRequest(hRequest, nil,0,PChar(FTPostQuery), Length(FTPostQuery));
dwLengthSizeBuffer:=1024;
HttpQueryInfo(hRequest,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(hRequest,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(hRequest);
InternetCloseHandle(Session);
InternetCloseHandle(hConnect);
Result:=StrPas(Contents);
FreeMem(Contents);
end;
var
Session,
hConnect,hRequest:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
AcceptType:LPStr;
TOPA:String;
begin
Session:=InternetOpen('',0,niL,niL,0);
hConnect := InternetConnect(Session,Pchar(URLA),80, nil, nil,INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PChar('Accept: */*');
hRequest := HttpOpenRequest(hConnect, 'POST',PChar(URLB), 'HTTP/1.0',nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
//----------------------------------------------------------
TOPA:='Content-Type: application/x-www-form-urlencoded';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Accept-Language: zh-cn';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Referer: http://www.163.com';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
//----------------------------------------------------------
HttpSendRequest(hRequest, nil,0,PChar(FTPostQuery), Length(FTPostQuery));
dwLengthSizeBuffer:=1024;
HttpQueryInfo(hRequest,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(hRequest,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(hRequest);
InternetCloseHandle(Session);
InternetCloseHandle(hConnect);
Result:=StrPas(Contents);
FreeMem(Contents);
end;
解决方案 »
- quickreport打印问题
- 用FastReport打印OLE流对象ACD图纸?急用
- 开发自己的文档收藏器,要能够存储文字图片,可以进行查询,不知数据库该如何选择
- 我用一个StringGrid显示几十条记录,怎样将这些提交回数据库?我用的是
- 在线等待---BORLAND中的GDB数据库文件用户名为SYSDBA,怎么一直打不开?
- 百思不得其解?Help me!!!
- 我看到这里的变了,什么都变了,顺便测试一下人气,我怀疑CSDN的下一步……
- *.sdr用什么软件来找开,软件名称叫什么?在那里有下载这种软件。
- 请看下面一段代码,怎么会抛出'书签不存在'的错误呢?word模板中肯定有相同的书签
- Access 数据导出成文件,然后导入到sql server 中,数据量比较大,如何实现
- 字段的Lookup属性设置错误
- 求源代码下载地址,自学的DELPHI,实在不知该怎么进步了,求一些源代码下载地址,自己看看,积累点功能代码
function GetCookiesFolder:string;
var
pidl:pItemIDList;
buffer:array [ 0..255 ] of char ;
begin
SHGetSpecialFolderLocation(
application.Handle , CSIDL_COOKIES, pidl);
SHGetPathFromIDList(pidl, buffer);
result:=strpas(buffer);
end;
function ShellDeleteFile(sFileName: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
FillChar(FOS, SizeOf(FOS), 0); {记录清零}
with FOS do
begin
wFunc := FO_DELETE;//删除
pFrom := PChar(sFileName);
fFlags := FOF_NOCONFIRMATION;
end;
Result := (SHFileOperation(FOS) = 0);
end;//删除cookies
procedure DelCookie;
var
dir:string;
begin
try
InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION, nil, 0);
dir:=GetCookiesFolder;
ShellDeleteFile(dir+'\*.txt'+#0);
except
abort;
end;
end;
function GetCookiesFolder:string;
var
pidl:pItemIDList;
buffer:array [ 0..255 ] of char ;
begin
SHGetSpecialFolderLocation(
application.Handle , CSIDL_COOKIES, pidl);
SHGetPathFromIDList(pidl, buffer);
result:=strpas(buffer);
end;
function ShellDeleteFile(sFileName: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
FillChar(FOS, SizeOf(FOS), 0); {记录清零}
with FOS do
begin
wFunc := FO_DELETE;//删除
pFrom := PChar(sFileName);
fFlags := FOF_NOCONFIRMATION;
end;
Result := (SHFileOperation(FOS) = 0);
end;
//删除cookies
procedure DelCookie;
var
dir:string;
begin
try
InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION, nil, 0);
dir:=GetCookiesFolder;
ShellDeleteFile(dir+'\*.txt'+#0);
except
abort;
end;
end; function GetCookiesFolder:string;
var
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies 这一项里面
var
lpEntryInfo: PInternetCacheEntryInfo;
hCacheDir: LongWord;
dwEntrySize: LongWord;
cachefile: string;
i: integer;
cancheqqlist: TStringList;
begin
cancheqqlist := TStringList.Create;
cancheqqlist.Clear;
dwEntrySize := 0;
FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then
lpEntryInfo^.dwStructSize := dwEntrySize;
hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
if hCacheDir <> 0 then
begin
repeat
if (lpEntryInfo^.CacheEntryType) and (NORMAL_CACHE_ENTRY) = NORMAL_CACHE_ENTRY then
cachefile := pchar(lpEntryInfo^.lpszSourceUrlName);
if (pos('www.juntnet.net', cachefile) > 0) or (pos('gamelint.xml', cachefile) > 0) then //清除特定网站的cookies.例如.www.kumusic.net.cn
cancheqqlist.Add(cachefile);
for i := 0 to cancheqqlist.Count - 1 do
DeleteUrlCacheEntry(pchar(cancheqqlist.Strings[i])); //执行删除操作
FreeMem(lpEntryInfo, dwEntrySize);
dwEntrySize := 0;
FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then
lpEntryInfo^.dwStructSize := dwEntrySize;
until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize);
end;
FreeMem(lpEntryInfo, dwEntrySize);
FindCloseUrlCache(hCacheDir);
cancheqqlist.Free;
end;
procedure DeleteIECache; // 清理IE缓存,IE.cookies
var
lpEntryInfo: PInternetCacheEntryInfo;
hCacheDir: LongWord;
dwEntrySize: LongWord;
cachefile: string;
i: integer;
cancheqqlist: TStringList;
begin
cancheqqlist := TStringList.Create;
cancheqqlist.Clear;
dwEntrySize := 0;
FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then
lpEntryInfo^.dwStructSize := dwEntrySize;
hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
if hCacheDir <> 0 then
begin
repeat
if (lpEntryInfo^.CacheEntryType) and (NORMAL_CACHE_ENTRY) = NORMAL_CACHE_ENTRY then
cachefile := pchar(lpEntryInfo^.lpszSourceUrlName);
if (pos('www.juntnet.net', cachefile) > 0) or (pos('gamelint.xml', cachefile) > 0) then //清除特定网站的cookies.例如.www.kumusic.net.cn
cancheqqlist.Add(cachefile);
for i := 0 to cancheqqlist.Count - 1 do
DeleteUrlCacheEntry(pchar(cancheqqlist.Strings[i])); //执行删除操作
FreeMem(lpEntryInfo, dwEntrySize);
dwEntrySize := 0;
FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then
lpEntryInfo^.dwStructSize := dwEntrySize;
until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize);
end;
FreeMem(lpEntryInfo, dwEntrySize);
FindCloseUrlCache(hCacheDir);
cancheqqlist.Free;
end;