获取网页源码的问题 本帖最后由 fbiboss 于 2013-06-29 12:03:10 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你不如用IdHttp控件:uses IdHTTP;function GetWebPage(URL: string):string;var http: TIDHttp;begin try http:=TIdHttp.Create(nil); result := http.Get(URL); finally Http.Free; end;end; 我知道IDHTTP啊,我只是想知道为什么会有问题,搞不明白,有时候有问题有时候又正常 begin Session := InternetOpen('', 0, nil, nil, 0); HttpFile := InternetOpenUrl(Session, PChar(Url), nil, 0, 0, 0); dwLengthSizeBuffer := 1024; GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间 GetMem(Contents, dwFileSize); try // HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved); InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead); InternetCloseHandle(HttpFile); InternetCloseHandle(Session); Result := StrPas(Contents); finally// FreeMem(szSizeBuffer); //释放,object高手突破说的话:借债还钱,天经地义 FreeMem(Contents); end;//end; 你这里dwFileSize没有赋值啊,是系统中随机的一个值,当然可能有时出问题罗 function GetWebPage(const Url: string): string;var Session, HttpFile: HINTERNET; szSizeBuffer: Pointer; dwLengthSizeBuffer: DWord; dwReserved: DWord; dwFileSize: DWord; dwBytesRead: DWord; Contents: PChar;begin Session := InternetOpen('', 0, nil, nil, 0); HttpFile := InternetOpenUrl(Session, PChar(Url), nil, 0, 0, 0); dwLengthSizeBuffer := 1024; try // // 这行放到HttpQueryINfo后去 GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间 GetMem(Contents, dwFileSize); HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved); GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间 GetMem(Contents, dwFileSize); InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead); InternetCloseHandle(HttpFile); InternetCloseHandle(Session); Result := StrPas(Contents); finally// FreeMem(szSizeBuffer); //释放,object高手突破说的话:借债还钱,天经地义 FreeMem(Contents); end;//end; 问个关于多层图片叠加的问题 ICSeqCompressFrame总是返回空值 怎么能让程序带参数 为什么在有些字符串在9X中能够正常显示,但在2000中却只能显示一部分 界面问题,再线等待 delphi如何将报表在面板的客户区中预览, 如何用socket进行多线程进行文件传输?如果能解决100分 急:为什么都用uses包含了,还是报告说没定义变量? 文本文件转换成数据库 一个应届毕业生的困惑:是不是只有做mis才有前途? 分享一个原创小工具:代码高亮记事本 File not found: 'TestThread.dcu' 是怎么一回事呢?
function GetWebPage(URL: string):string;
var
http: TIDHttp;
begin
try
http:=TIdHttp.Create(nil);
result := http.Get(URL);
finally
Http.Free;
end;
end;
Session := InternetOpen('', 0, nil, nil, 0);
HttpFile := InternetOpenUrl(Session, PChar(Url), nil, 0, 0, 0);
dwLengthSizeBuffer := 1024;
GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间
GetMem(Contents, dwFileSize);
try //
HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved);
InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead);
InternetCloseHandle(HttpFile);
InternetCloseHandle(Session);
Result := StrPas(Contents);
finally//
FreeMem(szSizeBuffer); //释放,object高手突破说的话:借债还钱,天经地义
FreeMem(Contents);
end;//
end;
var
Session, HttpFile: HINTERNET;
szSizeBuffer: Pointer;
dwLengthSizeBuffer: DWord;
dwReserved: DWord;
dwFileSize: DWord;
dwBytesRead: DWord;
Contents: PChar;
begin
Session := InternetOpen('', 0, nil, nil, 0);
HttpFile := InternetOpenUrl(Session, PChar(Url), nil, 0, 0, 0);
dwLengthSizeBuffer := 1024;
try //
// 这行放到HttpQueryINfo后去 GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间
GetMem(Contents, dwFileSize);
HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved);
GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间
GetMem(Contents, dwFileSize);
InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead);
InternetCloseHandle(HttpFile);
InternetCloseHandle(Session);
Result := StrPas(Contents);
finally//
FreeMem(szSizeBuffer); //释放,object高手突破说的话:借债还钱,天经地义
FreeMem(Contents);
end;//
end;