Ich habe mehrere URLs, die in allen Browsern einwandfrei funktionieren, aber wenn ich versuche, den Seiteninhalt mit Get() des Indy Http-Clients zu erhalten, gibt es Fehlercode 500, interner Serverfehler. Dies ist mit dem neuesten Indy SVN Build (4981).Warum gibt Indy Project HttpClient Get() Code 500 für einige URLs, die in Webbrowsern funktionieren?
Hier ist mein Beispielcode. Alles, was dazu benötigt wird, ist Delphi mit Indy-Komponenten und ein Formular mit einer Schaltfläche und einem Memo.
procedure TForm1.Button1Click(Sender: TObject);
var HTTPCLIENT1: TIdHTTP;
begin
try
try
HTTPCLIENT1 := TIdHTTP.Create(nil);
Memo1.Clear;
with HTTPCLIENT1 do
begin
HandleRedirects := True;
Request.UserAgent := 'Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)';
Memo1.Text := Get('http://www.laredoute.fr/vente-machine-a-coudre-bernette-20-kit-couture--garantie-2-ans.aspx?productid=401225048&documentid=999999&categoryid=22918417&customertarget=0&offertype=0&prodcolor=1#pos=33_n_n_n_n_n_n&numberpage=2');
Caption := ResponseText;
end;
except
On e: Exception do
begin
Memo1.Lines.Add('Exception: '+e.Message);
end;
end;
finally
HTTPCLIENT1.Free;
end;
end;
Es ist kein Verbindungsproblem auf meiner Seite, da 99% der URLs 200 oder 404 zurückgeben, nur wenige Rückkehr 500, aber jeder Browser öffnet sie fein in einer Sekunde.
Gibt es auf den URLs Umleitungen geschieht, die fehlschlagen? –
Völlig irrelevant, aber Ihre Userentent-Zeichenkette (Gecko 1.7.3, die in Firefox 0.10 verwendet wurde) kann dazu führen, dass einige Websites versuchen, unterschiedliche Inhalte zu liefern (passend für ältere Browser). –