Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism wininet in .net oder eine andere lösung?(gethtml) (https://www.delphipraxis.net/45282-wininet-net-oder-eine-andere-loesung-gethtml.html)

Prym 3. Mai 2005 15:14


wininet in .net oder eine andere lösung?(gethtml)
 
also ich habe die funktion gethtml(auch aus der dp) die ich gerne in .net übernhemen würde

dafür brauch man aber die wininet in der uses

so nun wollte ich fragen ob es ne bestimmte net uses gibt oder die funktion ander sein muss und wenn dann wie weil so gut kann ich das ja nicht

Funktion:
Delphi-Quellcode:
uses
wininet;

Function GetHTML(AUrl: string): string;
var
  databuffer : array[0..4095] of char;
  ResStr : string;
  hSession, hfile, hRequest: hInternet;
  dwindex,dwcodelen,datalen,dwread,dwNumber: cardinal;
  dwcode : array[1..20] of char;
  res   : pchar;
  Str   : pchar;
begin
  ResStr:='';
  if pos('http://',lowercase(AUrl))=0 then
     AUrl:='http://'+AUrl;
  hSession:=InternetOpen('InetURL:/1.0',
                         INTERNET_OPEN_TYPE_PRECONFIG,
                         nil,
                         nil,
                         0);
  if assigned(hsession) then
  begin
    hfile:=InternetOpenUrl(
           hsession,
           pchar(AUrl),
           nil,
           0,
           INTERNET_FLAG_RELOAD,
           0);
    dwIndex := 0;
    dwCodeLen := 10;
    HttpQueryInfo(hfile,
                  HTTP_QUERY_STATUS_CODE,
                  @dwcode,
                  dwcodeLen,
                  dwIndex);
    res := pchar(@dwcode);
    dwNumber := sizeof(databuffer)-1;
    if (res ='200') or (res ='302') then
    begin
      while (InternetReadfile(hfile,
                              @databuffer,
                              dwNumber,
                              DwRead)) do
      begin
        if dwRead =0 then
          break;
        databuffer[dwread]:=#0;
        Str := pchar(@databuffer);
        resStr := resStr + Str;
      end;
    end
    else
      ResStr := 'Status:'+res;
    if assigned(hfile) then
      InternetCloseHandle(hfile);
  end;
  InternetCloseHandle(hsession);
  Result := resStr;
end;

Prym 4. Mai 2005 16:09

Re: wininet in .net oder eine andere lösung?(gethtml)
 
push

Prym 5. Mai 2005 16:52

Re: wininet in .net oder eine andere lösung?(gethtml)
 
so nochmal das push²

jbg 5. Mai 2005 17:32

Re: wininet in .net oder eine andere lösung?(gethtml)
 
Der Namespace System.Net dürfte in diesem Fall interessant sein.

Hier ein Beispiel in C# (die getPage() Methode sollte das sein, was du suchst)

Prym 5. Mai 2005 17:46

Re: wininet in .net oder eine andere lösung?(gethtml)
 
vieleicht

werde mal versuchen das in delphi.net zu übersetzen

toms 5. Mai 2005 17:52

Re: wininet in .net oder eine andere lösung?(gethtml)
 
Code:
//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a tool.
//     Runtime Version: 1.1.4322.573
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------

uses System.Net, System.IO, System.Text;

type
  TArrayOfString = array of string;
  ClientGET = class
  strict private
  class var
    bShow: Boolean;
  public
    class procedure Main(args: TArrayOfString); virtual;static;
    class procedure showusage; virtual;static;
    class procedure getPage(url: string); virtual;static;
  end;
 
implementation

{$AUTOBOX ON}
{$HINTS OFF}
{$WARNINGS OFF}

class procedure ClientGET.Main(args: TArrayOfString);
begin
  if (args.Length < 1) then
    showusage
  else
  begin
    if (args.Length = 2) then
      bShow := False
    else
      bShow := True;
    getPage(args[0]);
  end;
  Console.WriteLine;
  Console.WriteLine('Drcken Sie die EINGABETASTE, um fortzufahren...');
  Console.ReadLine;
end;

class procedure ClientGET.showusage;
begin
  Console.WriteLine('Versucht, einen URL abzurufen');
  Console.WriteLine(''#13#10'Verwendung:');
  Console.WriteLine('ClientGET URL');
  Console.WriteLine('Beispiele:');
  Console.WriteLine('ClientGET http://www.microsoft.com/net/');
end;

class procedure ClientGET.getPage(url: string);
type
  TArrayOfArrayOfChar = array of array of Char;
  TArrayOfChar = array of Char;
var
  str: string;
  count: Integer;
  read: TArrayOfChar;
  sr: StreamReader;
  encode: Encoding;
  ReceiveStream: Stream;
  req: WebRequest;
  _result: WebResponse;
begin
  _result := nil;
  try
    try
      req := WebRequest.Create(url);
      _result := req.GetResponse;
      ReceiveStream := _result.GetResponseStream;
      encode := System.Text.Encoding.GetEncoding('utf-8');
      sr := StreamReader.Create(ReceiveStream, encode);
      Console.WriteLine(''#13#10'Antwortstream erhalten');
      if bShow then
      begin
        read := New(TArrayOfArrayOfChar, 256);
        count := sr.Read(read, 0, 256);
        Console.WriteLine('HTML...'#13#10);
        while (count > 0) do
        begin
          str := string.Create(read, 0, count);
          Console.Write(str);
          count := sr.Read(read, 0, 256);
        end;
        Console.WriteLine('');
      end;
    except
      on Exception do
        Console.WriteLine(''#13#10'Der angeforderte URI konnte nicht gefunden werden oder ist ungltig.');
    end;
  finally
    if (_result <> nil) then
      _result.Close;
  end;
end;

Prym 5. Mai 2005 18:25

Re: wininet in .net oder eine andere lösung?(gethtml)
 
oh gerade erst gesehen haste das getestet wenn ich fragen darf
werde das gleich mal ausprobieren


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz