關於 Indy 的用法(Get & Redirect),大出血。(300分)

  • 主题发起人 主题发起人 jiichen
  • 开始时间 开始时间
J

jiichen

Unregistered / Unconfirmed
GUEST, unregistred user!
問 Indy 的 Get & OnRedirect 用法!

var
Stream:TFileStream;

idhttp1.get(URL, Stream);

是抓該網址的方法,現在問題來了,假如該網址會轉址
那檔名也會隨之變化,我該如何使用 Get 來完成?

不可以先使用 Head 來獲取資訊,因為該網址並不穩定,
檔案是確定存在,但 Server 會依當時的網路狀況來發出
檔案未存在或稍候的錯誤訊息,
所以可能 Head 沒有正確但 Get 正確或
Head 正確,但 Get 便錯誤了,所以要求在一個迴圈中只使用
一個 Get 來達成要求。

另一點是我是使用 TFileStream 來存檔的,那....當網址 Redirect 時,
檔案也隨之變動名稱,此時要如何改名??(下載的明明是 get.exe ,但卻看見
一個 tmp_1231232.tmp 存在是很奇怪的,所以,不可下載完才改。)

ps: ReGet 的下載方式很符合我的需求,證明是達的到的 。
 
Sorry,i don't know。
帮你提前。
^_^
 
应该是你建立好了TFileStream然后再传进去的,所以那个文件名应该是你确定的,
应该不会变动啊。。。。。[:(]

变的只是Stream里面的内容。。。。
 
問題網址中途會變化,而檔名也是中途才能知道正確的,一開始只知道一個 php 或 cgi 或 asp


例如底下的網址會經過幾次的重新導向:

開始下載 [http://campaign.pchome.com.tw/mp3_2002q1/toget.php]。嘗試 N 1

GET http://campaign.pchome.com.tw/mp3_2002q1/toget.php HTTP/1.0
要求指向 http://toget.pchome.com.tw/adm/member.php?Rmxvd19ubz0xMjMwOCZTb2Z0X3VybD1odHRwOi8vY29vbGZpbGVzLnRvZ2V0LmNvbS50dy90b2dldF9zb2Z0L211bHRpbWVkaWFfbXAzL2t1cm8zODF0LmV4ZQ==

GET http://toget.pchome.com.tw/adm/member.php?Rmxvd19ubz0xMjMwOCZTb2Z0X3VybD1odHRwOi8vY29vbGZpbGVzLnRvZ2V0LmNvbS50dy90b2dldF9zb2Z0L211bHRpbWVkaWFfbXAzL2t1cm8zODF0LmV4ZQ== HTTP/1.0
要求指向 http://toget.pchome.com.tw/cgi-bin/download/C/download.cgi?Flow_no=12308&Soft_url=http://coolfiles.toget.com.tw/toget_soft/multimedia_mp3/kuro381t.exe

GET http://toget.pchome.com.tw/cgi-bin/download/C/download.cgi?Flow_no=12308&Soft_url=http://coolfiles.toget.com.tw/toget_soft/multimedia_mp3/kuro381t.exe HTTP/1.0
要求指向 http://coolfiles.toget.com.tw/toget_soft/multimedia_mp3/kuro381t.exe

GET http://coolfiles.toget.com.tw/toget_soft/multimedia_mp3/kuro381t.exe HTTP/1.0
 
下次提问最好用简体中文好不好?
 
to mdc:
是因為會看見亂碼嗎?

小弟這裡是使用繁體中文,可以看見簡繁同頁顯示呀!
 
看看netant的执行log可以知道,它是首先用http获取网页内容,分析有无转址,然后获取新的
地址。

另外,我想知道如何execscript网页中的script,烦请告诉我。谢谢!
 
Indy可以处理Redirect的,看看源码吧
 
用IdHTTP的OnRedirect事件处理

procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
begin

end;
 
可是一開始已經使用 TFileStream.Create 檔名 了,
中途改變後可以將此 Stream 變更檔名嗎?
 
后退
顶部