AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP Socket (+ HTTP_GET) möglichst ohne Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Socket (+ HTTP_GET) möglichst ohne Komponenten

Ein Thema von chri_ri · begonnen am 20. Okt 2009 · letzter Beitrag vom 21. Okt 2009
Antwort Antwort
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: TCP Socket Programmierung möglichst ohne Komponenten

  Alt 20. Okt 2009, 15:53
Ich schmeiß hier mal folgendes rein, falls es jemand interessiert:
(Wie man sieht eine Konsolenanwendung)
Delphi-Quellcode:
program Project1;

//mit Konsole
{$APPTYPE CONSOLE}


uses
  activeX;


//Deklaration des Interfaces für den Zugriff auf XMLHttp-Klasse vom Internet Explorer (von Delphi generieren lassen)
//Ich habe mal die von mir benötigten Funktionen von safecall auf stdcall umgewandelt.
type
  IXMLHTTPRequest = interface(IDispatch)
    ['{ED8C108D-4349-11D2-91A4-00C04F7969E8}']
    function open(const bstrMethod: WideString; const bstrUrl: WideString; varAsync: OleVariant;
                   bstrUser: OleVariant; bstrPassword: OleVariant):HResult; stdcall;
    procedure setRequestHeader(const bstrHeader: WideString; const bstrValue: WideString); safecall;
    function getResponseHeader(const bstrHeader: WideString): WideString; safecall;
    function getAllResponseHeaders: WideString; safecall;
    function send(varBody: OleVariant):Hresult; stdcall;
    procedure abort; safecall;
    function Get_status: Integer; safecall;
    function Get_statusText: WideString; safecall;
    function Get_responseXML: IDispatch; safecall;
    function Get_responseText: WideString; safecall;
    function Get_responseBody: OleVariant; safecall;
    function Get_responseStream: OleVariant; safecall;
    function Get_readyState: Integer; safecall;
    procedure Set_onreadystatechange(const Param1: IDispatch); safecall;
    property status: Integer read Get_status;
    property statusText: WideString read Get_statusText;
    property responseXML: IDispatch read Get_responseXML;
    property responseText: WideString read Get_responseText;
    property responseBody: OleVariant read Get_responseBody;
    property responseStream: OleVariant read Get_responseStream;
    property readyState: Integer read Get_readyState;
    property onreadystatechange: IDispatch write Set_onreadystatechange;
  end;

//name der Klasse als Ressource (dadurch kann man vom IE auch auf Opera oder auf eins der restlichen UnterschichtBrowser umsteigen ;) )
resourcestring
 ClassName='Msxml2.XMLHTTP';


//hier Ersetzen, was mit der heruntergeladenen Seite passieren soll.
procedure DoSomething(text:Widestring);
begin
  writeln(text);
  readln;
end;

//Herunterladen mittels XMLHttpRequest
procedure Run;
var XMLHttpRequest:IXMLHttpRequest;
    ClassID:TGUID;
begin
  if CLSIDFromProgID(PWideChar(WideString(LoadResString(@ClassName))),ClassID) <> s_ok then
    writeln('Fehler bei CLSIDFromProgID')
  else
  begin
    if CoCreateInstance(ClassID,nil,CLSCTX_INPROC_SERVER,IXMLHttpRequest,XMLhttpRequest) <> s_ok then
      writeln('Fehler bei CoCreateInstance')
    else
    begin
      if XMLHttpRequest.open('Get','http://www.delphipraxis.net/',false,'','')<>s_ok then
        writeln('Fehler bei XMLHttpRequest.open')
      else
      begin
        if XMLHttpRequest.send(0)<>s_ok then
          writeln('Fehler bei XMLHttpRequest.send')
        else
        begin
          if XMLHttpRequest.readyState=4 then
            DoSomething(XMLHttpRequest.responseText)
          else
            writeln('Fehler beim Laden des Dokuments');
        end;
      end;
    end;
  end;
end;


//Programmstart
begin
  coinitialize(nil);
  Run;
  couninitialize;
end.
Edit: Soviel rote Kästen: da war doch tatsächlich jemand schneller...
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 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