大家都知道,在FlashGet或NetAns里面。
添加一个任务。
加入URL。
如果是:http://www.xxx.com/abc.zip
这个我可以用DELPHI实现的。
现在问题是如果输入的URL是:http://www.xxx.com/down.asp?id=1(这里对应一个软件,在IE中直接输入就可以下载的,直接叫你保存).
但是我就不能实现。不过FlashGet,NetAns就可以实现.你输入http://www.xxx.com/down.asp?id=1
他就直接在帮你下载了.
我就想知道他是怎么下载的。
怎么把那个ASP文件对应的软件下载下来的!谢谢!
答对马上给分!

解决方案 »

  1.   

    最好有DELPHI源代码!
    谢谢!很急的搞了两天了。
    发了500多分出去了。
    都没有人回答正确!
      

  2.   

    这个大概需要一个解释过程
    http://www.xxx.com/down.asp?id=1
    提交以后,服务器返回一个文件的url,而后者就是你需要的。
    如何实现?我也不知道。
      

  3.   

    function GetInetFile (const fileURL, FileName: String): boolean;
    const BufferSize = 1024;
    var
     hSession, hURL: HInternet;
     Buffer: array[1..BufferSize] of Byte;
     BufferLen: DWORD;
     f: File;
     sAppName: string;
    begin
    Result:=False;
    sAppName := ExtractFileName(Application.ExeName);
    hSession := InternetOpen(PChar(sAppName),
                   INTERNET_OPEN_TYPE_PRECONFIG,
                  nil, nil, 0);
    try
     hURL := InternetOpenURL(hSession,
               PChar(fileURL),
               nil,0,0,0);
     try
      AssignFile(f, FileName);
      Rewrite(f,1);
      repeat
       InternetReadFile(hURL, @Buffer,
                        SizeOf(Buffer), BufferLen);
       BlockWrite(f, Buffer, BufferLen)
      until BufferLen = 0;
      CloseFile(f);
      Result:=True;
     finally
      InternetCloseHandle(hURL)
     end
    finally
     InternetCloseHandle(hSession)
    end
    end;procedure TForm1.Button3Click(Sender: TObject);
    var FileOnNet, LocalFileName: string;
    begin
    FileOnNet:=
     'http://delphi.about.com/library/forminbpl.zip';
    LocalFileName:='File Downloaded From the Net.zip';if GetInetFile(FileOnNet,LocalFileName)=True then
     ShowMessage('Download successful')
    else
     ShowMessage('Error in file download')end;
    为了你这个200分,我花了一天的时间测试通过的.请接收给分吧.哈哈.
      

  4.   

    试试 Maple119(枫叶) 的办法,应该可以
      

  5.   

    Uses
      winInet;
    function GetInetFile (const fileURL, FileName: String): boolean;
    const BufferSize = 1024;
    var
     hSession, hURL: HInternet;
     Buffer: array[1..BufferSize] of Byte;
     BufferLen: DWORD;
     f: File;
     sAppName: string;
    begin
    Result:=False;
    sAppName := ExtractFileName(Application.ExeName);
    hSession := InternetOpen(PChar(sAppName),
                   INTERNET_OPEN_TYPE_PRECONFIG,
                  nil, nil, 0);
    try
     hURL := InternetOpenURL(hSession,
               PChar(fileURL),
               nil,0,0,0);
     try
      AssignFile(f, FileName);
      Rewrite(f,1);
      repeat
       InternetReadFile(hURL, @Buffer,
                        SizeOf(Buffer), BufferLen);
       BlockWrite(f, Buffer, BufferLen)
      until BufferLen = 0;
      CloseFile(f);
      Result:=True;
     finally
      InternetCloseHandle(hURL)
     end
    finally
     InternetCloseHandle(hSession)
    end
    end;procedure TForm1.Button3Click(Sender: TObject);
    var FileOnNet, LocalFileName: string;
    begin
      FileOnNet:='http://www.xxx.com/downing.asp?id=39'; 
      LocalFileName:='File Downloaded From the Net.zip';
      if GetInetFile(FileOnNet,LocalFileName)=True then
         ShowMessage('Download successful')
      else
         ShowMessage('Error in file download')
    end;
    呵呵.再次调整一下.也把引用贴出来。
      

  6.   

    是可以。
    不过遇到了点问题。
    就是取不到下载的文件名啊。
    只能自己为他取名。
    如果下载的是RAR文件。
    但是我又不知道。
    我总不可能把定义的文件名写成。
    ABB.ZIP文件吧。
    枫叶兄。
    再帮我试试!
      

  7.   

    这种软件都运用了一种网络路径智能分析算法,如果不能直接下载,需要程序去根据一定的规则进行分析从新整理出类似于的可载路径~~~~~  如果你不了解这种换算方法就是有源码也不会用~~~~~~~  
    去去其他一些专门提供下载(大多是电影网站)的论坛,那里经常介绍一些下载技巧,其中就有将http://www.xxx.com/downing.asp?id=39解读成为http://www.xxx.com/zz.exe的方法,你读了之后会有启发,最好写出自己的算法~~~~~~~
      

  8.   

    <程序员>有期就是介绍了这个,我给你查查
    忘了,在2002年的那本里: