線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2183
推到 Plurk!
推到 Facebook!

關於獲取一個網站的返回信息函數. (Idhttp?Recv?)

答題得分者是:pceyes
rainker
一般會員


發表:6
回覆:1
積分:1
註冊:2007-10-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-01-27 22:05:18 IP:116.209.xxx.xxx 訂閱

我想獲取get到一個網站上所返回的信息.

比如我用:IDhttp,可以用IdHTTP1.Response.ResponseCode獲取返回的代碼.

但是我想獲取一個網站返回的所有信息,比如長度,主機地址等,其實也就是獲取它的HTTP頭.

該怎麼獲取..IDHTTP有點慢,貌似可以用winsock裡的recv函數吧?但是不知道怎麼用啊.麻煩給個簡單通俗的例子看看,Thank !!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-01-28 10:29:20 IP:60.249.xxx.xxx 未訂閱
1.use socket colient
2.send "GET /\n\n" to the server
3. read the result (response)
4.parser the result.
rainker
一般會員


發表:6
回覆:1
積分:1
註冊:2007-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-01-28 12:14:13 IP:116.209.xxx.xxx 訂閱
大大 能給個範例嗎 ?

我是名新手

Thank U
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-01-28 15:11:39 IP:122.127.xxx.xxx 訂閱
------
努力會更接近成功
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-02-10 09:07:25 IP:61.229.xxx.xxx 訂閱
轉貼
[原]一个简单的函数回调演示
http://www.wa666.cn/?action=show&id=52

作用是取得網頁的HTML源碼,使用idHttp控件。
將獲取的過程寫在線程裏,不再主線程內運行,是防止界面的無響應現象。idAntiFree控件雖然可以做到,但是效果不明顯。很多時候線程裏不可能做太多的事情,可能用來通用化,而且線程之間的通信還是比較麻煩,用消息的方法雖然簡單,但是如果我用來接受消息的類是不可視的話,使用AllocateHWnd函數來建立消息句柄將佔用資源,所以這個時候使用回調函數是比較折中的辦法,雖然不太符合OO設計^_^.
下面是代碼(WinXP SP2 D2006測試通過)...

[code delphi]
unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdHTTP;
type
TCallBack = procedure(Html: string) of object;
type
TForm1 = class(TForm)
mmo1: TMemo;
btn1: TButton;
edt1: TEdit;
procedure btn1Click(Sender: TObject);
private
procedure myCallBack(Html: string);
{ Private declarations }
public
{ Public declarations }
end;
THtmlThreade = class(TThread)
private
FHttp: TIdHTTP;
FUrl: string;
myCallBack: TCallBack;
protected
procedure Execute; override;
public
constructor Create(aUrl: string; CallBack: TCallBack);
destructor Destroy; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.myCallBack(Html: string);
begin
mmo1.Text := Html;
end;
{ THtmlThreade }
procedure THtmlThreade.Execute;
begin
myCallBack(FHttp.Get(FUrl));
end;
constructor THtmlThreade.Create(aUrl: string; CallBack: TCallBack);
begin
inherited Create(True);
FUrl := aUrl;
myCallBack := CallBack;
FHttp := TIdHTTP.Create(nil);
FreeOnTerminate := True;
end;
destructor THtmlThreade.Destroy;
begin
FHttp.Free;
inherited Destroy;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
mythread: THtmlThreade;
begin
mythread := THtmlThreade.Create(edt1.Text, myCallBack);
mythread.Resume;
end;
end.
[/code]

------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-02-10 09:15:51, 註解 貼圖‧
系統時間:2024-04-20 18:54:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!