Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHttp.post -> Connection Closed G... dann EAccessViolation (https://www.delphipraxis.net/111625-idhttp-post-connection-closed-g-dann-eaccessviolation.html)

gandime 6. Apr 2008 20:07


IdHttp.post -> Connection Closed G... dann EAccessViolati
 
Hi,
ich schicke bei deiner Seite einen Postbefehlt:
Delphi-Quellcode:
var
  sl_post:tstringlist;
  s_html:string;
begin
  sl_post.Values['login_email']:=s_mail;
  sl_post.Values['login_password']:=s_pw;
  s_html:=IdHTTP.Post(s_html,sl_post);
Daraufhin bekomme ich folgende Fehlermeldung:
Zitat:

Connection Closed Gracefully.
Wenn ich dann nocheinmal den Post-Befehl benutze bekomme ich diese Fehlermeldung:
Zitat:

Erste Gelegenheit für Exception bei $75D43843. Exception-Klasse EAccessViolation mit Meldung 'Access violation at address 00486583 in module 'prg_multi_checker.exe'. Read of address 00000014'. Prozess prg_multi_checker.exe (3392)
Woran könnten beide Fehler liegen?


mfg
gandime

SirThornberry 6. Apr 2008 20:10

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
du musst bevor du sl_post verwendest auch eine gültige Instanz davon mit Create erzeugen. Sobald eine Zugriffsverletzung beim lesen oder schreiben im Bereich von 0******* auftritt deutet das immer darauf hinn das auf ein nicht erstelltest Object zugegriffen wird. Bei dir ist das der Zugriff auf 00000014. Also 14 Bytes hinter nil weil dein Object scheinbar nil ist (was widerum glück ist weil lokale Variablen undefiniert sind).

gandime 6. Apr 2008 20:47

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
ohh sry ich hab das vergessen hier ins forum zu schreiben so siehts richtig aus:
Delphi-Quellcode:
var
  sl_post:tstringlist;
  s_html:string;
begin
  sl_post:=tstringlist.create;
  sl_post.Values['login_email']:=s_mail;
  sl_post.Values['login_password']:=s_pw;
  s_html:=IdHTTP.Post(s_html,sl_post);
end;
edit:
und die Fehlermeldung auch nochmal etwas anders hab eben wohl die falsche kopiert:
Zitat:

Erste Gelegenheit für Exception bei $75D43843. Exception-Klasse EIdNotASocket mit Meldung 'Socket Error # 10038
Socket operation on non-socket.'. Prozess prg_multi_checker.exe (4536)

Dani 6. Apr 2008 21:24

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Mit Haltepunkten und Einzelschritt kannst du dich bis zum fehlerverursachenden Aufruf vorwärtstasten. Verwendest du die neueste Indy-Version?

gandime 6. Apr 2008 21:34

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
ja ich verwende Indy 10 und habe auch in meinem Code alle Breakpoints gesetzt und es liegt an:
Zitat:

s_html:=IdHTTP.Post(s_html,sl_post);
Aber ich kann nicht in den IdHttp Code gucken, wo genau der Fehler liegt, da ich nicht weiss wie ich ihn unter Delphi 2007 öffne!

edit:
es genügt mir ja wenn ich die Komponente wieder benutzen kann aber es funktioniert nichtmal hiertmit immer der selbe Fehler:
Delphi-Quellcode:
IdHTTP.free;
IdHTTP:=Tidhttp.Create(nil);
Fehler:
Zitat:

Erste Gelegenheit für Exception bei $75D43843. Exception-Klasse EIdNotASocket mit Meldung 'Socket Error # 10038
Socket operation on non-socket.'. Prozess prg_multi_checker.exe (4536)

Dani 7. Apr 2008 01:41

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Liste der Anhänge anzeigen (Anzahl: 1)
Welchen Wert hat denn IdHTTP.Version zur Laufzeit? [gemeint ist nicht die Unit IdHTTP, sondern deine Instanz von TIdHttp]
Wenn deine Version kleiner ist als "10.2.3", ist der Fehler nach einem Update vielleicht weg.

Zitat:

Aber ich kann nicht in den IdHttp Code gucken, wo genau der Fehler liegt, da ich nicht weiss wie ich ihn unter Delphi 2007 öffne!
Eigentlich musst du nur in den Umgebungsoptionen den Pfad zu den Quellcode-Ordnern hinzufügen. Wo der Quellcode liegt, müsstest du wissen, falls du Indy "von Hand" installiert hast.

gandime 7. Apr 2008 12:35

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Also bei Delphi 2007 ist Indy 10 schon vorinstalliert aber ich kann nicht genau sagen welche version ich kann blos sagen das die Endung Indy...100.dpl lautet.
Das Alte Indy was vorinstalliert war habe ich jetzt gelöscht und ich wollte das neue installieren.
Bis zum Compilen war alles kein Problem aber sobald ich versuch Indy zu installieren bekomme ich folgende Meldung:
Zitat:

Package: C:\...IndySystem120.dpl kann nicht installiert werden, da es keine Entwurfszeit-Package ist.
Was muss ich machen um das zu beheben?

ghost007 7. Apr 2008 12:48

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Hallo,
ich stehe momentan vor dem gleichen problem.
Nun wollte ich das "update" installieren. Wie muss ich da vorgehen, wenn ich schon eine alte version von den indys drauf hab?

MfG - Ghost007

Dani 7. Apr 2008 13:35

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Indy 10 Installationsanleitung
danach: Indy-Quellcodeordner zum Suchpfad in der Win32-Bibliothek hinzufügen

Zum Deinstallieren:
  • Delphi starten
  • Hauptmenü -> Packages installieren -> Indy-Packages auswählen und entfernen (mit der Schaltfläche "Entfernen")
  • Alte Indy-Pfade aus der Win32-Bibliothek löschen und ebenfalls in den Papierkorb verschieben
  • Delphi schließen
  • Global nach *Indy*.bpl suchen und nur die nicht mehr benötigten BPLs in den Papierkorb verschieben. (welche das sind, muss klar sein, sonst lieber nichts löschen)
  • Delphi starten und schauen/hoffen, dass keine Fehlermeldungen kommen.
  • Delphi schließen

oder alternativ, falls euer Delphi Indy10 vorinstalliert mitbringt und man im Setup die installierten Komponenten wählen kann, einfach Indy dort abwählen.

ghost007 7. Apr 2008 13:40

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Zitat:

Zitat von Dani
  • Alte Indy-Pfade aus der Win32-Bibliothek löschen und ebenfalls in den Papierkorb verschieben

o.O was ist das ? und wie mach ich das? :D

MfG - Ghost007

Dani 7. Apr 2008 13:49

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Ordner stehen in den Optionen (siehe Bild). Ich würde sie löschen und aus der Bibliothek entfernen, damit ganz sicher keine Überreste der alten Indy-Version auf der Platte rumliegen.

Edit: merke gerade, dass dazu natürlich Delphi laufen muss.... mal die Anleitung ändern.

gandime 7. Apr 2008 14:02

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
so ich habe jetzt alle Schritte befolgt und ich habe immer noch den selben Fehler:
Zitat:

Package: C:\...IndySystem120.dpl kann nicht installiert werden, da es keine Entwurfszeit-Package ist.
Unter Details steht folgendes:
Zitat:

[216CCA75]{delphicoreide100.bpl} PasCppPakMgr.TIDEDesignPackage.Load + $95
[2005405B]{rtl100.bpl } Registry.TRegistry.GetKey + $6B
[20054070]{rtl100.bpl } Registry.TRegistry.GetKey + $80
[20034BAD]{rtl100.bpl } Classes.TStrings.GetStrictDelimiter + $D
[200353EB]{rtl100.bpl } Classes.TStringList.SetUpdateState + $F
[200338AD]{rtl100.bpl } Classes.TStrings.EndUpdate + $D
[20034B0B]{rtl100.bpl } Classes.TStrings.SetDelimitedText + $16B
[20034B28]{rtl100.bpl } Classes.TStrings.SetDelimitedText + $188
[20003DC4]{rtl100.bpl } System.@FreeMem + $4
[20007A19]{rtl100.bpl } System.@LStrArrayClr + $21
[216CE089]{delphicoreide100.bpl} PasCppPakMgr.TProfileData.LoadPackageCache + $865
[20006BA9]{rtl100.bpl } System.@AfterConstruction + $1D
[216CC81D]{delphicoreide100.bpl} PasCppPakMgr.TIDEDesignPackage.DelayLoad + $61
[216DF058]{delphicoreide100.bpl} PakList.TPackageListItem.LoadWait + $30
[216DEFDC]{delphicoreide100.bpl} PakList.TPackageListItem.LoadDesignPackage + $68
[216DE5E7]{delphicoreide100.bpl} PakList.TPackageListItem.SetIsInstalled + $67
[216DE621]{delphicoreide100.bpl} PakList.TPackageListItem.SetIsInstalled + $A1
[216DE3BB]{delphicoreide100.bpl} PakList.TPackageList.AddPackage + $DB
[216E9CD6]{delphicoreide100.bpl} BasePasProjOpts.TProjOptsManager.InstallPackage + $62
[216ED9FF]{delphicoreide100.bpl} BasePasProjOpts.TProjectOptions.InstallPackage + $3
[217115D1]{delphicoreide100.bpl} PasMgr.TPascalPackageCodeUpdater.InstallPackage + $15D
[216D9369]{delphicoreide100.bpl} PkgContainers.TStdPackageProjectContainer.CommandH andler + $69
[20A56579]{coreide100.bpl} Containers.TStdContainer.CommandHandler + $1D
[2013375F]{vcl100.bpl } Menus.TMenuItem.Click + $A7
[20134C87]{vcl100.bpl } Menus.TMenu.DispatchCommand + $13
[20135DE6]{vcl100.bpl } Menus.TPopupList.WndProc + $82
[20031FC4]{rtl100.bpl } Classes.TThreadList.UnlockList + $4
[200EBA20]{vcl100.bpl } Graphics.FreeMemoryContexts + $98
[20142E60]{vcl100.bpl } Controls.TWinControl.MainWndProc + $2C
[20135D35]{vcl100.bpl } Menus.TPopupList.MainWndProc + $1D
[20040DE4]{rtl100.bpl } Classes.StdWndProc + $14
[20160EF8]{vcl100.bpl } Forms.TApplication.ProcessMessage + $FC
[20160F32]{vcl100.bpl } Forms.TApplication.HandleMessage + $A
[20161188]{vcl100.bpl } Forms.TApplication.Run + $CC
[00422971]{bds.exe } bds.bds (Line 196, "" + 7) + $2
vlt hilft es ja bei der Lösung

Dani 7. Apr 2008 14:24

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
"Installieren" nur bei Packages wählen, die mit "dcl" beginnen (siehe Installationsanleitung), die restlichen Packages nur "Compilieren".

gandime 7. Apr 2008 14:45

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Was ich bis jetzt gemacht habe:
Zitat:

# Delphi starten
# Hauptmenü -> Packages installieren -> Indy-Packages auswählen und entfernen (mit der Schaltfläche "Entfernen")
# Alte Indy-Pfade aus der Win32-Bibliothek löschen und ebenfalls in den Papierkorb verschieben
# Delphi schließen
# Global nach *Indy*.bpl suchen und nur die nicht mehr benötigten BPLs in den Papierkorb verschieben. (welche das sind, muss klar sein, sonst lieber nichts löschen)
# Delphi starten und schauen/hoffen, dass keine Fehlermeldungen kommen.
# Delphi schließen
-danach habe ich den suchpfard angeglichen
-IndySystem120.dpk nur compiliert
-IndyCore120.dpk nur compiliert
-IndyProtocols120.dpk nur compiliert
Dann müsste ich machen:
Zitat:

-dclIndyCore120.dpk installieren wo der Fehler Auftritt (immer noch der selbe)
-dclIndyProtocols120.dpk
hab ich was vergessen?

Dani 7. Apr 2008 18:16

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
Zitat:

Package: C:\...IndySystem120.dpl kann nicht installiert werden, da es keine Entwurfszeit-Package ist.
Naja laut Fehlermeldung versuchst du nicht "dclIndyCore120.dpk" zu installieren sondern "IndySystem120.dpk". Kommt die gleiche Meldung auch, wenn du vorher alle anderen geöffneten Packages schließt?

Hier ist mal ein Video von der Installation, falls wir da was unterschiedlich gemacht haben sollten...

gandime 7. Apr 2008 19:57

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
ohh fuck :oops: jetzt ist mir erst aufgefallen das das verschiedene dpl´s sind...
ich hab zum einen nicht richtig gelesen und auch nicht gesehen das das halt verschiedene sind...

also erstmal herzlichen Dank für deine Mühe!!!

edit:
so bei meinem eigentlichem Problem hat das jetzt leider nichts gebracht blos das alles schneller geworden ist :-)
Gibt es denn keine Möglichkeit die Komponente nach dem Fehler zu resetten?
edit2:
es kommen immer mehr Probleme:
wenn ich jetzt auf eine ssl Seite gehen möchte bekomme ich immer diesen Fehler:
Zitat:

Erste Gelegenheit für Exception bei $75DB3843. Exception-Klasse EIdHTTPProtocolException mit Meldung 'HTTP/1.1 400 Bad Request'. Prozess Project1.exe (4028)
edit3:
hier dann einmal meine voreinstellungen für die IdHttp Komponente und die ssl handler:
Delphi-Quellcode:
  IdHTTP1.HandleRedirects:=True;
  IdHTTP1.RedirectMaximum:=15;
  IdHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
  IdHTTP1.ReadTimeout:=15000;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile:=ExtractFilePath(ParamStr(0))+'ssl.cer';
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth:=2;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvSSLv3;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode:=sslmClient;
  IdHTTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
edit4:
Der Fehler tritt nur auf wenn ich den Post-Befehl auf einer https Seite benutze. (mit ssl)
Der Befehlt Get geht auf https Seiten. (mit ssl)
Die Befhele Get und Post funktionieren auch http Seiten (ohne ssl)
edit5:
so den Fehler für diese Fehlermeldung habe ich jetzt gefunden:
Zitat:

Erste Gelegenheit für Exception bei $75DB3843. Exception-Klasse EIdHTTPProtocolException mit Meldung 'HTTP/1.1 400 Bad Request'. Prozess Project1.exe (4028)
und zwar darf ich folgenden Parameter nicht mit schicken
Delphi-Quellcode:
  sl.Values['cmd']:='_xclick';
aber warum bitte?
mein ursprüngliches problem besteht aber immer noch!

gandime 10. Apr 2008 22:54

Re: IdHttp.post -> Connection Closed G... dann EAccessVio
 
edit6 geht nicht mehr ;-)
Bin wieder auf meine alte Version umbestiegen und ich hab jetzt herausgefunden woran es liegt bzw was man nach so einer Fehlermeldung machen muss ;-)
hier einmal ne Hilfe Für die die den Selben Fehler haben einfach etwas nachdenken und lesen was man genau für einen Fehler bekommen hat


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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