我如何收到Rapidshare API的结果?

时间:2009-08-26 17:24:53

标签: delphi rapidshare

我想在我的项目中使用RapidShare API,但我不知道如何调用它然后收到结果。

我使用的是Delphi 2009。

1 个答案:

答案 0 :(得分:2)

您所要做的就是发出HTTP请求并获取结果。

尝试此链接以查看其工作原理:getapicpu_v1

您可以在此处找到可以拨打的电话:http://images.rapidshare.com/apidoc.txt

下面的代码打印出来:

  

getapicpu_v1:   0,60000

     

nextuploadserver_v1:   669

FetchHTML()只是一个帮助函数来检索HTTP请求的结果。如果您使用代理,它将自动使用您在Internet Explorer中配置的代理。

program RapidShareTest;

{$APPTYPE CONSOLE}

uses
  SysUtils, WinInet;

function FetchHTML(url:string):AnsiString;
var
  databuffer : array[0..4095] of AnsiChar;
  ResStr : AnsiString;
  hSession, hfile: hInternet;
  dwindex,dwcodelen,dwread,dwNumber:cardinal;
  dwcode : array[1..20] of char;
  res    : pAnsiChar;
  Str    : pAnsiChar;
begin
  ResStr := '';
  if pos('http://',lowercase(url))=0 then
    url := 'http://'+url;

  hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
  try
    if assigned(hsession) then
      begin
        hfile := InternetOpenUrl(hsession,pchar(url),nil,0,INTERNET_FLAG_RELOAD, 0);
        dwIndex  := 0;
        dwCodeLen := 10;
        HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE,@dwcode, dwcodeLen, dwIndex);
        res := pAnsiChar(@dwcode);
        dwNumber := sizeof(databuffer)-1;
        while (InternetReadfile(hfile,@databuffer,dwNumber,DwRead)) do
          begin
            if dwRead =0 then
              break;
            databuffer[dwread]:=#0;
            Str := pAnsiChar(@databuffer);
            resStr := resStr + Str;
          end;
        if assigned(hfile) then
          InternetCloseHandle(hfile);
      end;
  finally
    InternetCloseHandle(hsession);
  end;
  Result := resStr;
end;


begin
  Writeln('getapicpu_v1: ');
  WriteLn(FetchHTML('http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=getapicpu_v1'));
  WriteLn;

  Writeln('nextuploadserver_v1: ');
  WriteLn(FetchHTML('http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=nextuploadserver_v1'));
  WriteLn;

  ReadLn;

end.