关于Delphi 根据URL获取该网址title(也即是标题)的有关问题~
关于Delphi 根据URL获取该网址title(也即是标题)的问题~~~
RT,根据要求,要根据一个URL,例如http://www.baidu.com这个网址,就要得到其网页的标题,有什么方法么?那个什么TIdHTTP控件用不好,再次谢过!
------解决思路----------------------
------解决思路----------------------
用Internet控件页的TTcpClient控件速度最快!
------解决思路----------------------
两种方式都可以!但是3楼的相对复杂一下,你可以用2楼的,比较简单!
------解决思路----------------------
idhttp你感觉不好用,应该是最后返回的编码问题,自己定义一个字符流,然后给返回的字符流设置为UTF8编码就可以了。
RT,根据要求,要根据一个URL,例如http://www.baidu.com这个网址,就要得到其网页的标题,有什么方法么?那个什么TIdHTTP控件用不好,再次谢过!
------解决思路----------------------
procedure TForm1.itle1Click(Sender: TObject);
var
Document: IHTMLDocument2;
begin
WebBrowser1.Navigate('www.baidu.com');
while WebBrowser1.busy do
Application.ProcessMessages;
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
Document := WebBrowser1.Document as IHTMLDocument2;
Caption := Document.title;
end;
------解决思路----------------------
用Internet控件页的TTcpClient控件速度最快!
procedure TForm1.Button1Click(Sender: TObject);
var
buf: array[0..1023] of Char;
I, J, K: Integer;
begin
TcpClient1.RemoteHost := 'www.baidu.com';
TcpClient1.RemotePort := '80';
TcpClient1.Connect;
buf :=
'GET / HTTP/1.1'+sLineBreak+
'UserAgent: Mozilla/3.0 (compatible)'+sLineBreak+
'Host: www.baidu.com'+sLineBreak+
'Connection: Close'+sLineBreak+
sLineBreak;
TcpClient1.SendBuf(buf, 256);
buf := '';
TcpClient1.ReceiveBuf(buf, 1024);
buf := '';
TcpClient1.ReceiveBuf(buf, 1024);
TcpClient1.Disconnect;
for I:=0 to 1023-5 do
if (buf[I]='<') and (buf[I+1]='t') and (buf[I+2]='i') and (buf[I+3]='t') and (buf[I+4]='l') and (buf[I+5]='e') then
for J:=I+6 to 1023-5 do
if buf[J]='>' then
for K:=J+1 to 1023-5 do
if buf[K]='<' then
begin
buf[K-(J+1)]:=#0;
ShowMessage(Utf8Decode(buf));
Exit
end else
buf[K-(J+1)]:=buf[K]
end;
------解决思路----------------------
两种方式都可以!但是3楼的相对复杂一下,你可以用2楼的,比较简单!
------解决思路----------------------
idhttp你感觉不好用,应该是最后返回的编码问题,自己定义一个字符流,然后给返回的字符流设置为UTF8编码就可以了。