Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   IdHTTP.Head hängt Programm auf (https://www.delphipraxis.net/154979-idhttp-head-haengt-programm-auf.html)

youuu 4. Okt 2010 09:31

IdHTTP.Head hängt Programm auf
 
Hi,

wenn ich IdHTTP.Head benutze hängt sich mein Programm auf, ohne eine Fehlermeldung zu spucken.

Allerdings nur bei einer Homepage.

IdHTTP.Head('http://www.stickerei-suekuen.com/');

Weiß jemand Rat?

Edit: nach geschätzen 2 Minuten erhalte ich die Fehlermeldung "Connection closed gracefully"

Klaus01 4. Okt 2010 09:56

AW: IdHTTP.Head hängt Programm auf
 
Guten Morgen,

wie hast Du denn
idhttp.HandleRedirects gesetzt?
Versuche es mal mit true.

Grüße
Klaus

youuu 4. Okt 2010 09:59

AW: IdHTTP.Head hängt Programm auf
 
Es ist True;

Delphi-Quellcode:
Idhttp.HandleRedirects := true;

Klaus01 4. Okt 2010 10:03

AW: IdHTTP.Head hängt Programm auf
 
Prüfe mal mit nslookup, ob Du den Namen auflösen kannst.

Zitat:

H:\>nslookup www.stickerei-suekuen.com/
Server: xxxx
Address: xxxxx

*** xxxx can't find www.stickerei-suekuen.com/: Non-existent domain


Kaum läßt man das / hinten weg funktioniert die Namensauflösung:

Zitat:


H:\>nslookup www.stickerei-suekuen.com
Server: xxxx
Address: xxxx

Non-authoritative answer:
Name: www.worldsoft-cms.info
Address: 217.196.177.100
Aliases: www.stickerei-suekuen.com
Kann es vielleicht noch an der Anzahl der Redirects scheitern?

Grüße
Klaus

youuu 4. Okt 2010 10:06

AW: IdHTTP.Head hängt Programm auf
 
Delphi-Quellcode:
Idhttp.Get
funktioniert, woran kann das liegen

youuu 4. Okt 2010 10:11

AW: IdHTTP.Head hängt Programm auf
 
Ich hab
Delphi-Quellcode:
Idhttp.RedirectMaximum := 100;
mal gesetzt, aber Problem besteht weiterhin

generic 4. Okt 2010 10:35

AW: IdHTTP.Head hängt Programm auf
 
Vielleicht kann der NGinx Server das nicht (was ungewöhnlich wäre).
Firewall/Proxy dazwischen, welche die Anfrage schluckt?

Zeichne mal den Netzwerkverkehr auf.

youuu 4. Okt 2010 10:38

AW: IdHTTP.Head hängt Programm auf
 
Zitat:

Zitat von generic (Beitrag 1053608)
Firewall/Proxy dazwischen, welche die Anfrage schluckt?

Nein, keines von beiden, bei anderen Webseiten funktioniert es auch einwandfrei.

Wie genau kann ich den Netzwerkverkehr aufzeichnen?

shmia 4. Okt 2010 10:42

AW: IdHTTP.Head hängt Programm auf
 
Liste der Anhänge anzeigen (Anzahl: 2)
Du könntest das mal mit dem Programm "HTTPDownloader" im Anhang testen.
Das Programm verwendet nicht Indy sondern MSXML2.

Wenn die gleichen Probleme auftreten, dann liegt der Fehler beim Webserver.

youuu 4. Okt 2010 10:45

AW: IdHTTP.Head hängt Programm auf
 
Das Programm liefert ein ordentliches Result.

Leider löst das nicht mein Problem :(

youuu 4. Okt 2010 14:16

AW: IdHTTP.Head hängt Programm auf
 
Keiner weiter eine Idee oder wie man die Headerinformationen über MSXML2 heraus bekommt?

generic 4. Okt 2010 14:54

AW: IdHTTP.Head hängt Programm auf
 
Erst einmal ließ mal das hier bitte:
Pushing

Hast du den Netzwerkverkehr jetzt mal inzwischen aufgezeichnet und geprüft was passiert?
Zitat:

Wie genau kann ich den Netzwerkverkehr aufzeichnen?
z.B. mit wireshark, Ethercap oder Packetyzer

shmia 4. Okt 2010 16:58

AW: IdHTTP.Head hängt Programm auf
 
Zitat:

Zitat von youuu (Beitrag 1053651)
oder wie man die Headerinformationen über MSXML2 heraus bekommt?

Sourcecode ist jetzt im Anhang Beitrag #9.

youuu 4. Okt 2010 19:35

AW: IdHTTP.Head hängt Programm auf
 
Zitat:

Zitat von shmia (Beitrag 1053697)
Zitat:

Zitat von youuu (Beitrag 1053651)
oder wie man die Headerinformationen über MSXML2 heraus bekommt?

Sourcecode ist jetzt im Anhang Beitrag #9.

Hm, dort ist kein Sourcecode zu finden. Weiterin lediglich die exe.

Klaus01 4. Okt 2010 21:20

AW: IdHTTP.Head hängt Programm auf
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend,

dieser Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  httpClient : Tidhttp;
begin
  httpClient := TIdHttp.Create(nil);
  try
    httpClient.HandleRedirects := true;
    httpClient.Head(edit1.text);
    memo1.Text:=httpClient.Response.ResponseText;
    memo1.Lines.add('ResponseCode: '+IntToStr(httpClient.Response.ResponseCode));
  finally
    httpClient.free;
  end;
end;
schreibt dieses in das Memo:
Zitat:

HTTP/1.1 200 OK
ResponseCode: 200
Wo bei Dir das Problem ist - ist mir zur Zeit ein Rätsel.

Edit: Zum Tracen kannst Du Wireshark verwenden.
Ich haben mal den Trace zum erfolgreichen Versuch angehängt.

Grüße
Klaus

youuu 5. Okt 2010 07:07

AW: IdHTTP.Head hängt Programm auf
 
Hi Klaus,

das weiß ich, leider habe ich ja genau da mein Problem mit Indy und dieser einen Webeite.

Delphi-Quellcode:
httpClient.Head(edit1.text);
Das sich dort mein Programm für 2 Minuten aufhängt und dann auf einmal "connection closed gracefully" ausspuckt.
Der Coe funktioniert wunderbar bei allen Webeiten bei mir, nur leider nicht bei dieser einen.


Daher wollte ich es in MSXML2 realisieren, nur wie das funktioniert weiß ich leider nicht.

Klaus01 5. Okt 2010 07:33

AW: IdHTTP.Head hängt Programm auf
 
Guten Morgen,

deswegen wurdest Du ja schon mehrmals aufgefordert
einen Trace zu ziehen wenn Du es mit der besagten URL versuchst.

Übrigens habe ich mit Deiner Problem URL getestet.

Grüße
Klaus

youuu 5. Okt 2010 08:03

AW: IdHTTP.Head hängt Programm auf
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist der Netzwerkverkehr für die Domain zu sehen.

Klaus01 5. Okt 2010 08:07

AW: IdHTTP.Head hängt Programm auf
 
Danke,

allerdings wäre die pcap Datei hilfreicher.
Was man auf dem Screenshot sieht, ist das der
angefragte Webserver antwortet.
Also dürfte Deine (Head) Anfrage eigentlich nicht im Timeout enden.

Grüße
Klaus

youuu 5. Okt 2010 08:16

AW: IdHTTP.Head hängt Programm auf
 
Ich habe jetzt mal ein nues Projekt geöffnet und deinen Code probiert Klaus, aber mit dem gleichen Ergebnis wie bei meinem.

Wie hast du die Url angegeben?

Edit: Ich habe es jetzt an 3 verschiedenen Rechnern aus probiert mit jeweils 3 verschiedenen Internetverbindungen, immer das gleiche Ergebnis, es kann also nicht an meiner Verbindung liegen.

1. Verbindung --> T-online DSL 16k
2. Verbindung --> Kabel 32K
3. Vebindung 1&1 Server Berlin

Klaus01 5. Okt 2010 08:37

AW: IdHTTP.Head hängt Programm auf
 
ich habe die URL aus Beitrag #1 kopiert
und einmal mit slash am Ende der URL und einmal ohne.

Provider: M-Net

Grüße
Klaus

youuu 5. Okt 2010 08:39

AW: IdHTTP.Head hängt Programm auf
 
Hm ich versteh es nicht.
Bei mir mag eseinfach nicht klappen.

habe alle variationen der Url aus probiert.

Dann bleibt mir nur die Möglichkeit über MSXML2.

Wenn jemand weiß wie das funktioniert, wäre ich froh wenn er sich meldet, per PN oder hier im Thread

generic 5. Okt 2010 08:51

AW: IdHTTP.Head hängt Programm auf
 
Zitat:

Zitat von youuu (Beitrag 1053802)
Im Anhang ist der Netzwerkverkehr für die Domain zu sehen.

Bei Paket 41 ist der Head Request. Vorher scheinst du schon einmal mit GET die Root abzufragen.
Was passiert zwischen Paket 44 und 560?
Das sind die 2 Minuten wo er sich aufhängt.

Zumindest antwortet dann dein Server nicht.
Gibt jetzt zwei Möglichkeiten:
1) dein Request ist defekt und der Server verwirft diesen
2) der Server hat ein Fehler und stürzt bei deinen Request ab (oder Endlosschleife).

youuu 5. Okt 2010 08:59

AW: IdHTTP.Head hängt Programm auf
 
Ich hab alle Anfragen und sende Versuche zu der besagten Domain gefiltert, diese sieht man in dem Bild, mehr wurden nicht aufgezeichnet.

Edit: Ja ich setze vorher ein Get das ist richtig, dieser funktioniert auch einwandfrei, daher bin ich so verwundert.
Edit2: wie kann mein Request falsch sein, wenn er doch von Indy verschickt wird und nicht von mir selbst erstellt wurde?

Edit3: habe in diesem Artikel eiin Beispiel für MSXML2 gefunden:hier

Aber dort tritt das Problem aus das "Undeklarierter Bezeichner: 'CoXMLHTTP'"

youuu 6. Okt 2010 18:44

AW: IdHTTP.Head hängt Programm auf
 
Push

shmia 7. Okt 2010 10:50

AW: IdHTTP.Head hängt Programm auf
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang der Sourcecode für die Verwendung von MSXML2.
Kurzanleitung zum Import der MSXML2 Typbibliothek ist in der Hauptunit.

generic 7. Okt 2010 10:58

AW: IdHTTP.Head hängt Programm auf
 
Kann es sein, dass du die Verbindung zum Server beim GET nicht wieder schließt?
Vielleicht ist noch ein KeepAlive an oder ähnliches.

Es könnte daher sein, dass der Server keine weitere Verbindung von dir an nimmt.

Prüfe mal bitte wie viele gleichzeitige Verbindungen zum Server offen sind.

youuu 7. Okt 2010 11:38

AW: IdHTTP.Head hängt Programm auf
 
Zitat:

Zitat von generic (Beitrag 1054262)
Kann es sein, dass du die Verbindung zum Server beim GET nicht wieder schließt?
Vielleicht ist noch ein KeepAlive an oder ähnliches.

Es könnte daher sein, dass der Server keine weitere Verbindung von dir an nimmt.

Prüfe mal bitte wie viele gleichzeitige Verbindungen zum Server offen sind.

Daran liegt es leider nicht, habe sogar ein komplett neues Projekt geöffnet wo ich nur den Head abfrage, jedoch gleiche Problem. :(

youuu 7. Okt 2010 12:22

AW: IdHTTP.Head hängt Programm auf
 
Danke shmia, dein Code hat endlich meine Nerven beruhigt :)

youuu 4. Nov 2010 09:37

AW: IdHTTP.Head hängt Programm auf
 
Ich hab das Thema noch mal ausgegraben, da ich einen ähnlichen Fehler auch bei MSXML2 erhalte bei dieser Homepage.

http://www.lineabuero.de/

Nach sehr langem Timeout erhalte ich dann die Meldung das der Download des Headers nicht funktionierte.
Kennt jemand den grund dafür?

delphinia 7. Feb 2011 01:00

AW: IdHTTP.Head hängt Programm auf
 
ich habe das selbe problem

Ich möchte wissen welchen Code die webseite zurückliefert unf frage per HEAD ab.
Doch bei "http://www.google.de" versagt idHTTP total egal ob MIT oder OHNE / am ende


Gibt es eine Lösung?

Klaus01 7. Feb 2011 09:15

AW: IdHTTP.Head hängt Programm auf
 
.. versagt total ist eine nicht sehr präziese Fehlermeldung.

Hast Du handleRedirects eingeschaltet?
Etwaige Proxies in Verwendung?

Grüße
Klaus

delphinia 7. Feb 2011 09:30

AW: IdHTTP.Head hängt Programm auf
 
ja na klar ist das aktiviert und die Anzahl steht schon auf 1000 :)

es ist ja so derzeit nur Google.de was nicht geht.. test.de geht oder delphipraxis.net

Klaus01 7. Feb 2011 20:22

AW: IdHTTP.Head hängt Programm auf
 
Guten Abend Doreen,

jetzt kommt das, was Du wahrscheinlich nicht lesen willst.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  httpClient : TIdHttp;
begin
  httpClient := TidHttp.Create(nil);
  httpClient.HandleRedirects := true;
  httpClient.Head('http://www.google.de');
  memo1.Text := httpClient.ResponseText;
  httpClient.free;
end;
tut es.

Response ist: "HTTP/1.1 200 OK "

Nachtrag: Indy Version: 10.1.5

Grüße
Klaus

delphinia 7. Feb 2011 20:23

AW: IdHTTP.Head hängt Programm auf
 
Ich habe gerade von Indy 9 auf 10 ein update gemacht nun geht es auch bei mir :(


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