Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komischer Fehler mit TClientSocket (https://www.delphipraxis.net/120903-komischer-fehler-mit-tclientsocket.html)

wth 18. Sep 2008 17:04


Komischer Fehler mit TClientSocket
 
Hallo,

Ich versuche gerade mit der TClientSocket Komponente eine simple HTTP Anfrage zu senden.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
sock.host:='google.de';
sock.port:=80;
sock.ClientType:=ctnonblocking;
sock.Open; //sock.active:=true;
end;

procedure TForm1.sockConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendText('GET / HTTP/1.0' + #13#10#13#10)
end;

procedure TForm1.sockRead(Sender: TObject; Socket: TCustomWinSocket);
begin
memo1.text:=socket.ReceiveText;
end;
wieso bekomme ich hier als Antwort irgendwelche komischen Zeichen :?:
Zitat:

呈偔ㄯ〮㌠㈰䘠畯摮਍潌慣楴湯›瑨灴⼺眯睷朮潯汧⹥敤യ䌊捡敨䌭湯牴汯›牰癩瑡൥䌊湯整瑮吭灹㩥琠硥⽴瑨汭 ※档牡敳㵴呕ⵆസ匊瑥䌭潯楫㩥倠䕒㵆䑉㔽㉥㐴攵㠰㈹挱㈰㨵䵔ㄽ㈲㜱㌵㤷㨷䵌ㄽ㈲㜱㌵㤷㨷㵓䭌獑彦乗湩祭癧洲 ※硥楰敲㵳慓ⱴㄠⴸ敓⵰〲〱ㄠ㨶㌰ㄺ‷䵇㭔瀠瑡㵨㬯搠浯楡㵮朮潯汧⹥潣൭䐊瑡㩥吠畨‬㠱匠灥㈠〰‸㘱〺㨳㜱 䜠呍਍敓癲牥›睧൳䌊湯整瑮䰭湥瑧㩨㈠㠱਍潃湮捥楴湯›汃獯൥ഊ㰊呈䱍㰾䕈䑁㰾敭慴栠瑴⵰煥極㵶挢湯整瑮琭 灹≥挠湯整瑮∽整瑸栯浴㭬档牡敳㵴瑵ⵦ∸ਾ吼呉䕌㌾㈰䴠癯摥⼼䥔䱔㹅⼼䕈䑁㰾佂奄ਾ䠼㸱〳′潍敶㱤䠯㸱吊敨 搠捯浵湥⁴慨⁳潭敶੤䄼䠠䕒㵆栢瑴㩰⼯睷⹷潧杯敬搮⽥㸢敨敲⼼㹁മ㰊䈯䑏㹙⼼呈䱍ാ

omata 18. Sep 2008 17:08

Re: Komischer Fehler mit TClientSocket
 
Bei mir sieht die Antwort folgendermaßen aus...
Code:
HTTP/1.0 302 Found
Location: [url]http://www.google.de/[/url]
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=6d1b1a59c632379b:TM=1221754085:LM=1221754085:S=0PZRuli-F07YMqPR; expires=Sat, 18-Sep-2010 16:08:05 GMT; path=/; domain=.google.com
Date: Thu, 18 Sep 2008 16:08:05 GMT
Server: gws
Content-Length: 218
Connection: Keep-Alive

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
[url="http://www.google.de/"]here[/url].
</BODY></HTML>

wth 18. Sep 2008 17:11

Re: Komischer Fehler mit TClientSocket
 
Zitat:

Zitat von omata
Bei mir sieht die Antwort folgendermaßen aus...
Code:
HTTP/1.0 302 Found
Location: [url]http://www.google.de/[/url]
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=6d1b1a59c632379b:TM=1221754085:LM=1221754085:S=0PZRuli-F07YMqPR; expires=Sat, 18-Sep-2010 16:08:05 GMT; path=/; domain=.google.com
Date: Thu, 18 Sep 2008 16:08:05 GMT
Server: gws
Content-Length: 218
Connection: Keep-Alive

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
[url="http://www.google.de/"]here[/url].
</BODY></HTML>

Hallo, genau diese Antowrt möchte ich auch bekommen.

Woren kann es liegen, dass ich diese komischen Zeichen bekomme, liegt es an meinen System?

Rad Studio 2009 Architect, Win Vista x86

wth 18. Sep 2008 17:17

Re: Komischer Fehler mit TClientSocket
 
Ich habe gerade mit einem Sniffer gesehen, dass dort auch die richtigen Daten ankommen, aber wieso werden die dennoch falsch angezeigt?
:wall:

smallsmoker 18. Sep 2008 17:42

Re: Komischer Fehler mit TClientSocket
 
ich habe ja wirklich keine ahnung über unicode aber benutzt du vieleicht delphi 2009 ?
(ich hoffe ich rede keinen schwachsinn :? )

omata 18. Sep 2008 17:44

Re: Komischer Fehler mit TClientSocket
 
Zitat:

Zitat von wth
Rad Studio 2009 Architect, Win Vista x86


wth 18. Sep 2008 17:49

Re: Komischer Fehler mit TClientSocket
 
Liegt es also an Unicode?

Wenn ja, wie könnte ich es dann beheben?

Mit der Indy HTTP Kompo. funktioniert es ja schließlich auch...

wth 18. Sep 2008 18:25

Re: Komischer Fehler mit TClientSocket
 
Mit Delphi 7 klappt es perfekt, gerade ausprobiert.

Wieso aber nicht mit Delphi 2009, muss man dort irgendwas spezielles vorher einstellen oder so? (wegen Unicode)

:wiejetzt:

toms 18. Sep 2008 18:26

Re: Komischer Fehler mit TClientSocket
 
Hallo,

Ist schon etwas seltsam :gruebel:

Ich habe gedacht man könnte es mal via Stream probieren - und tatsächlich:

Es funktioniert :thumb:

Delphi-Quellcode:
procedure TForm1.sockRead(Sender: TObject; Socket: TCustomWinSocket);
var
  Stream: TStringStream;
  Buffer : Pointer;
  Len : Integer;
begin
  Len := Socket.ReceiveLength;
  Stream := TStringStream.Create();
  try
    Stream.Seek(0,soFromEnd);
    Buffer := AllocMem(Len);
      try
        Socket.ReceiveBuf(Buffer^, Len);
        Stream.Write(Buffer^, Len);
        ShowMessage(Stream.DataString)
      finally
        FreeMem(Buffer);
      end;
  finally
    Stream.Free;
  end;
end;

wth 18. Sep 2008 18:31

Re: Komischer Fehler mit TClientSocket
 
Zitat:

Zitat von toms
Hallo,

Ist schon etwas seltsam :gruebel:

Ich habe gedacht man könnte es mal via Stream probieren - und tatsächlich:

Es funktioniert :thumb:

Delphi-Quellcode:
procedure TForm1.sockRead(Sender: TObject; Socket: TCustomWinSocket);
var
  Stream: TStringStream;
  Buffer : Pointer;
  Len : Integer;
begin
  Len := Socket.ReceiveLength;
  Stream := TStringStream.Create();
  try
    Stream.Seek(0,soFromEnd);
    Buffer := AllocMem(Len);
      try
        Socket.ReceiveBuf(Buffer^, Len);
        Stream.Write(Buffer^, Len);
        ShowMessage(Stream.DataString)
      finally
        FreeMem(Buffer);
      end;
  finally
    Stream.Free;
  end;
end;

Ah, Vielen Dank toms, etwas umständlich aber naja, hoffentlich fixt CodeGear das bald mal...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr.
Seite 1 von 2  1 2      

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