AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi http GET Request per TSocket senden und Response empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

http GET Request per TSocket senden und Response empfangen

Ein Thema von jokerfacehro · begonnen am 2. Mär 2010 · letzter Beitrag vom 2. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#1

http GET Request per TSocket senden und Response empfangen

  Alt 2. Mär 2010, 13:10
hallo,

ich programmiere mit Delphi 7 Enterprise.

ich mache gerade ein nonVCL socket programm, das auch soweit läuft.
ich möchte jetzt mit dem TCP socket daten von nem Webserver abgreifen

dabei hab ich mir das so gedacht:

Delphi-Quellcode:

str:='GET /download/index.php HTTP/1.1'+#13#10+'Host: blumenhund.afischi.de';

FSocket:=createSocket_TCP;

connectSock(FSocket,hp,80); //hp ist die ipadresse des webservers

Send(FSocket,str,Length(str),1);



function WndProc(hWnd: HWND; Msg: UINT; wp: WPARAM;
lp: LPARAM): integer; stdcall;
var str,str1:string;
    count:integer;
begin
   Result := 0;
  case lp of

    FD_READ:
      begin
      str:='';
      str1:='';
      setLength(str1,8192);
      //showmessage('hallo du da');
      //FillChar(str,Length(str),#0);
        count:=recv(FSocket,str1[1],8192,0);

        while count>0 do begin
          setLength(str1,count);
          str:=str+str1;
          setLength(str1,8192);
          count:=recv(FSocket,str1[1],8192,0);
        end;

        Showmessage(str);
        PostQuitmessage(Msg);
        //-- WMOnAsyncServerData(wp, lp);
      end;
    end;
end;
allerdings bekomme ich keine antwort vom server.
sieht mein Get-String falsch aus ? oder woran kanns liegen.

die sockets funktionieren auf jedenfall und internet ist auch vorhanden, ohne proxy
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 13:17
http erwartet am Ende eine Leerzeile
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 13:20
str:='GET /download/index.php HTTP/1.1'+#13#10+'Host: blumenhund.afischi.de'+#13#10+#13#10; hat keinen erfolg gebracht


Edit:

str:='GET /download/index.php HTTP/1.1\r\nHost: blumenhund.afischi.de\r\n\r\n'; geht auch nicht
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 13:31
Und die anderen Angaben, welche so in einen http-Header gehören
- Accept
- Accept-Language
- Accept-Encoding
- User-Agent
- Connection
Ich weis nicht, was und wie und warum davon notwendig ist.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#5

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 13:38
Also wenn mein Firefox einen request sendet, dann sieht der so aus:
Code:
GET /download/index.php HTTP/1.1
Host: blumenhund.afischi.de
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en-GB;q=0.7,de-DE;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 13:48
hmm also mein header sieht so aus und des funzt immer noch net

Delphi-Quellcode:
str:='GET /download/index.php HTTP/1.1 \r\n\r\n'+
     'Host: blumenhund.afischi.de\r\n\r\n'+
     'Connection: close\r\n\r\n'+
     'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n\r\n'+
     'Accept-Encoding: gzip\r\n\r\n'+
     'Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7\r\n\r\n'+
     'Cache-Control: no \r\n\r\n'+
     'Accept-Language: de,en;q=0.7,en-us;q=0.3\r\n\r\n';

Edit: deinen habe ich auch ausprobiert Phoenix, geht aber auch nicht.
Wenn ich auf nen anderen Port lausche bekomme ich gleich ne absage vom server, dass der server die verbindung abgelehnt hat, aber
so bekomme ich garnix.
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 14:10
Also ich bekomme damit von der DP eine schöne Antwort

Edit:
Delphi-Quellcode:
s:='GET / HTTP/1.1 '+#13#10+
     'Host: delphipraxis.net'+#13#10+
     'Connection: close'+#13#10+
     'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'+#13#10+
     'Accept-Encoding: gzip'+#13#10+
     'Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7'+#13#10+
     'Cache-Control: no'+#13#10+
     'Accept-Language: de,en;q=0.7,en-us;q=0.3'+#13#10#13#10;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 15:35
ich lad mir grad den xampp und versuch das ganze mal aufm localhorst


Edit: aufm Xampp ausprobiert klappt auch nicht :/
das muss wohl irgendwo am socket liegen. komischerweise kann ich mit meinem eigenen server kommunizieren

das FD_READ wird in WndProc einfach nicht ausgelöst
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 16:02
Delphi-Quellcode:
uses
  windows,
  winsock;

// aus WinSock2
type WSAevent=THandle;
function WSACreateEvent:WSAEvent;stdcall;
external 'ws2_32.dllname 'WSACreateEvent';
function WSACloseEvent(hEvent:WSAevent):bool;stdcall;
external 'ws2_32.dllname 'WSACloseEvent';
function WSAResetEvent(hEvent: WSAEvent):bool;stdcall;
external 'ws2_32.dllname 'WSAResetEvent';
function WSAEventSelect(s:TSocket;hEventObject:WSAevent;lNetworkEvents:LongInt):Integer; stdcall;
external 'ws2_32.dllname 'WSAEventSelect';
function WSAWaitForMultipleEvents(cEvents:DWord;
                                  lphEvents:Pointer;
                                  fWaitAll:bool;
                                  dwTimeOUT:DWord;
                                  fAlertable:bool):DWord;stdcall;
external 'ws2_32.dllname 'WSAWaitForMultipleEvents';




var
  SockAddr1:TSockAddr= (sin_family:af_Inet;
                        sin_port:$5000; //=80
                        sin_addr:(S_addr:$C49F4B3E)); //=62.75.159.196


const WSA_WAIT_EVENT_0 = WAIT_OBJECT_0;


procedure main;
var wsaData:TwsaData;
    SockEvent:WSAEvent;
    Socket1:TSocket;
    WSAresult:Integer;
    buf:array[0..511] of char;
    s:string;
begin
  WSAStartUp(MakeWord(2,0),WSAData);

  Socket1:=Socket(af_Inet,Sock_Stream,IPProto_TCP);
  Connect(Socket1,SockAddr1,sizeof(TSockAddr));
  SockEvent:=WSACreateEvent;
  WSAEventSelect(Socket1,SockEvent,FD_Read);

  s:='GET /download/index.php HTTP/1.1 '+#13#10+
     'Host: blumenhund.afischi.de'+#13#10+
     'Connection: close'+#13#10+
     'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'+#13#10+
     'Accept-Encoding: gzip'+#13#10+
     'Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7'+#13#10+
     'Cache-Control: no'+#13#10+
     'Accept-Language: de,en;q=0.7,en-us;q=0.3'+#13#10#13#10;
  send(Socket1,s[1],length(s),0);



  repeat
    WSAResult:=WSAWaitForMultipleEvents(1,@SockEvent,false,infinite,false);
    case WSAResult of
      WSA_WAIT_EVENT_0 : begin
        fillchar(buf,sizeof(buf),0);
        recv(Socket1,buf,512,0);
        write(buf);
      end;
      else
        break;
    end;
    WSAresetEvent(SockEvent);
  until false;


  WSACloseEvent(SockEvent);
  WSACleanUp;
end;

begin
  main;
end.
Macht. Müsste aber auch über Messages gehen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: http GET Request per TSocket senden und Response empfang

  Alt 2. Mär 2010, 16:08
ich hab mal ne verbindung zu meinem server aufgebaut.

und der ankommende text beim server ist nicht der gleiche wie der abgesendete.
es kommen maximal 7 zeichen an und die sind "�"

andersrum, wenn ich vom server zu meinem client sende, kommt der klartext wunderbar an



Edit: hat sich gelöst, meine fresse

es lag daran:

Delphi-Quellcode:
send(Socket1,s,length(s),0);

//--->>>> so muss es sein

send(Socket1,s[1],length(s),0);
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz