AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komischer Fehler mit TClientSocket

Ein Thema von wth · begonnen am 18. Sep 2008 · letzter Beitrag vom 7. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Komischer Fehler mit TClientSocket

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

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 18:08
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>
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 18:11
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
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 18:17
Ich habe gerade mit einem Sniffer gesehen, dass dort auch die richtigen Daten ankommen, aber wieso werden die dennoch falsch angezeigt?
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#5

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 18:42
ich habe ja wirklich keine ahnung über unicode aber benutzt du vieleicht delphi 2009 ?
(ich hoffe ich rede keinen schwachsinn )
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 18:44
Zitat von wth:
Rad Studio 2009 Architect, Win Vista x86
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#7

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 18:49
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...
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#8

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 19:25
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)

  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 19:26
Hallo,

Ist schon etwas seltsam

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

Es funktioniert

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;
Thomas
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#10

Re: Komischer Fehler mit TClientSocket

  Alt 18. Sep 2008, 19:31
Zitat von toms:
Hallo,

Ist schon etwas seltsam

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

Es funktioniert

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...
  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 11:48 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