本帖最后由 fbiboss 于 2013-06-29 12:03:10 编辑

解决方案 »

  1.   

    你不如用IdHttp控件:uses IdHTTP;
    function GetWebPage(URL: string):string;
    var
      http: TIDHttp;
    begin
      try
        http:=TIdHttp.Create(nil);
        result := http.Get(URL);
      finally
        Http.Free;
      end;
    end;
      

  2.   

    我知道IDHTTP啊,我只是想知道为什么会有问题,搞不明白,有时候有问题有时候又正常
      

  3.   

    begin
          Session := InternetOpen('', 0, nil, nil, 0);
          HttpFile := InternetOpenUrl(Session, PChar(Url), nil, 0, 0, 0);
          dwLengthSizeBuffer := 1024;
          GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间
          GetMem(Contents, dwFileSize);
          try   //
                HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved);
                InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead);
                InternetCloseHandle(HttpFile);
                InternetCloseHandle(Session);
                Result := StrPas(Contents);
          finally//
                FreeMem(szSizeBuffer); //释放,object高手突破说的话:借债还钱,天经地义
                FreeMem(Contents);
          end;//
    end;
      

  4.   

    你这里dwFileSize没有赋值啊,是系统中随机的一个值,当然可能有时出问题罗
      

  5.   

    function GetWebPage(const Url: string): string;
    var
          Session, HttpFile: HINTERNET;
          szSizeBuffer: Pointer;
          dwLengthSizeBuffer: DWord;
          dwReserved: DWord;
          dwFileSize: DWord;
          dwBytesRead: DWord;
          Contents: PChar;
    begin
          Session := InternetOpen('', 0, nil, nil, 0);
          HttpFile := InternetOpenUrl(Session, PChar(Url), nil, 0, 0, 0);
          dwLengthSizeBuffer := 1024;
          try   //
                // 这行放到HttpQueryINfo后去 GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间
                GetMem(Contents, dwFileSize);
                HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved);
                GetMem(szSizeBuffer, dwLengthSizeBuffer); //给szsizebuffer动态申请1024内存空间
                GetMem(Contents, dwFileSize);
                InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead);
                InternetCloseHandle(HttpFile);
                InternetCloseHandle(Session);
                Result := StrPas(Contents);
          finally//
                FreeMem(szSizeBuffer); //释放,object高手突破说的话:借债还钱,天经地义
                FreeMem(Contents);
          end;//
    end;