Autor Beitrag
markusagb
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.02.17 23:24 
Hallo zusammen,

vielleicht könnt Ihr mir helfen, ich möchte einen Code von Delphi 7 auf 10 migrieren,
es hapert lediglich an einer Sache, und das geht nicht nur mir so.

Indy.post funktioniert in Delphi 7 wie folgt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Post;
Var
Params : TStringStream;
Url : String;
begin
          Params := TStringStream.create('');
          Params.WriteString('TA=1');
          IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
          Url:='http://127.0.0.1:8181';
          try
             Memo1.Text:=IdHttp1.Post(Url, Params);
          except
          ...
end;

Ich sende von meiner Applikation einen Post mit dem Wert "1" an eine andere App auf dem gleichen PC die auf Port 8181
empfängt, wenn "1" empfangen wird führt die App eine Routine aus. Das Ganze ist natürlich fürs Netzwerk gedacht von PC
1 zu PC2 usw...

In Delphi 10 kriege ich das allerdings nicht zum Laufen, der Post geht einfach nicht raus. Port ist offen, ein anderes Programm
sendet über den Port und es kann auch empfangen werden. Muss ich hier in Delphi 10 am Code etwas ändern?

Danke für Eure Hilfe!!

Markus

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2162
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 01.03.17 02:01 
Guten Abend markusagb und Willkommen,

und wenn du den TStringStream durch eine TStringList ersetzt, geht es dann? Kommen gar Fehlermeldungen zustande?

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18684
Erhaltene Danke: 1618

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 01.03.17 05:47 
Da TStringStream standardmäßig auch unter Delphi 10 noch AnsiStrings schreibt, kann es kaum ein Unicodeproblem sein. Es sei denn Indy liest den String aus dem Stream und kodiert die Daten um.

Um das zu testen kannst du wie user profile iconFrühlingsrolle schon geschrieben hat eine TStringList benutzen. Die hat nämlich den Vorteil, dass du an Post als dritten Parameter das Encoding mitgeben kannst.

Was passiert denn in deinem except? Zeigst du auftretende Fehler auch an? Und hast du das ganze im Debugger durchlaufen lassen? Kam eine Meldung?
Wenn nicht, was kommt denn im Memo an?

_________________
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
markusagb Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 02.03.17 14:25 
Hallo zusammen,

die Fehlermeldung heißt "Socket-Fehler # 10061 Verbindung abgelehnt".

Die Memo (Result) zeigt nichts an, gibt auch keine Fehlermeldung aus.
Die exception fliegt bei "http.post".

Mit TStringList bekomme ich einen "Bad Request error bei http.post(...)

Ich habe mich versucht einzulesen da viele das gleiche Problem haben,
lustiger weise funktioniert es in Delphi 7 wunderbar. Das muss wohl in Delphi 10
anders programmiert werden, leider findet mein Freund google auch nichts ...
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2162
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 02.03.17 15:58 
Es funktioniert nicht anders, einzig die (string)Datentypen können Probleme darstellen.
Ein Encoding fehlt eventuell noch beim Senden. Als Anlaufstelle würde ich dir das hier empfehlen.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
markusagb Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 02.03.17 17:32 
Danke für den Tip,
leider genau so ausprobiert und wieder Fehlermeldung, entweder "Verbindung wurde von Peer zurück gesetzt " oder "Die Verbindung wurde erfolgreich geschlossen".

Wenn ich den Code in Delphi 7 öffne funktioniert er.

Ich habe gelesen dass es mit Indy Delphi 10 so schlichtweg nicht geht - ist die Frage wie dann...
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2162
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 02.03.17 19:49 
Delphi wird nichts dafür können. Entweder hat die Indy Komponente einen kleinen Bug, oder sie wird nicht richtig benutzt.
Die Fehlermeldungen sprechen eher dafür, dass zu jenen Zeitpunkt der "Server" nicht erreichbar ist.
Wenn es ein lokaler Webserver a la XAMPP, WampServer ... ist, dann sollte er auch aktiv sein/bleiben.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
markusagb Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 02.03.17 19:53 
Es ist in diesem Fall zum Testen der eigene PC also 127.0.0.1, Port 8181 ist frei und kann auch von einem anderen Programm
benutzt werden. Da ich nun 4 user mit dem gleichen Problem gefunden habe und diese auch kein Ergebnis dazu hatten bis heute denke ich vielleicht doch an ein Komponentenproblem... außer jemand hier im Forum hat mir vielleicht nen anderen Tipp wie ich per Http-Post eine String-Variable (1 oder 0) zu einem Client schicken kann..

Danke Euch!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18684
Erhaltene Danke: 1618

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.03.17 19:57 
Bei dem Socketfehler "Verbindung abgelehnt" kommt es noch gar nicht zu einem Datenaustausch. Das heißt es kann nicht an irgendwelchen String-Kodierungen liegen.

Führe mal bitte diesen Befehl mit Adminrechten aus kurz nachdem du die Fehlermeldung Verbindung abgelehnt bekommen hast:
ausblenden Quelltext
1:
netstat -abno > c:\NetstatOutput.txt					

Dann suche bitte einmal die Zeile, in der der Port vorkommt und poste diese.

Der andere Fehler "Verbindung wurde von Peer zurück gesetzt" heißt, dass zwar eine Verbindung hergestellt wurde, aber keine Antwort kam. Das kann dann durchaus daran liegen, dass die Daten falsch formatiert waren.

Mit Wireshark könntest du beide Sendungen abfangen und vergleichen wo der Unterschied liegt.

Das andere Programm stammt nicht von dir nehme ich an?

_________________
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2162
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 02.03.17 20:03 
Es wäre am naheliegendsten, ein frisch angelegtes D7 Projekt unter diesen Bedingungen zu erstellen, um zu schauen, ob es dann auch so funktioniert.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
markusagb Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 02.03.17 20:13 
Das war das erste was ich gemacht habe :-(
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2162
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 02.03.17 22:10 
Wenn es überhaupt an Indy liegen sollte, dann installier' dir dazu die neueste Version.
Eine Beschreibung sowie einen Download findest du hier.
Zu beachten wäre einzig die Package-Version (230 für Delphi10).

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)