Einzelnen Beitrag anzeigen

Benutzerbild von gORDon_vdLg
gORDon_vdLg

Registriert seit: 7. Nov 2009
26 Beiträge
 
Delphi XE Architect
 
#1

Bei IdHTTP bekomme ich einen 500 Error bei POST request

  Alt 15. Feb 2010, 22:25
Es ist eventuell eher ein Problem des HTTP Protokoll, aber fragen kostet ja nichts.
Ich bastle im Moment einen Video Downloader für verschiedene Hoster wie z.B. YouTube usw. Ich verwende dazu IdHTTP, also die Indys. Die Seite SEITE-XY (vorsicht, teils heftige Videos!) hat bei manchen Videos eine Abfrage wo der User gefragt wird ob er schon 18 ist. Wenn man es im Firefox bestätigt wird folgender Post request gesendet:

Code:
POST /age-verification.asp HTTP/1.1
Host: [url]www.xy.com[/url]
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2) Gecko/20100115 Firefox/3.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: [url]http://www.xy.com/age-verification.asp?goingtoURL=get.asp?i=V5088[/url]
Cookie: ASPSESSIONIDCSRSASQQ=BBNKMMDAHPCKNOPANDLNAMBB; __utma=54023469.1060955171.1266258765.1266258765.1266261211.2; __utmc=54023469; __utmz=54023469.1266258765.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); _csoot=1266258765171; _csuid=4a29a19622d7e271
Content-Type: application/x-www-form-urlencoded
Content-Length: 76

Userchoice=I+am+above+18+years+of+age&goingtoURL=get.asp%3Fi%3DV5088&state=1
Mit Folgendem Delphi-Code versuche ich das ganze nach zu machen:

Delphi-Quellcode:
parameter:=TStringStream.Create('Userchoice=I+am+above+18+years+of+age&goingtoURL=get.asp%3Fi%3D'+GetGetParam(url, 'i')+'&state=1');
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
html:=IdHTTP1.Post('http://www.xy.com/age-verification.asp', parameter);
parameter.Free;
Wireshark verrät mir das Folgender Request zu stande kommt:

Code:
POST /age-verification.asp HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 76
Host: [url]www.xy.com[/url]
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2) Gecko/20100115 Firefox/3.6
Cookie: ASPSESSIONIDCSRSASQQ=LNKLMMDAOBCGLOJIAEHACNOC
Cookie2: $Version="1"

Userchoice=I+am+above+18+years+of+age&goingtoURL=get.asp%3Fi%3DV5088&state=1
Als antwort bekomme ich bei meinem Delphi-Code einen 500 Errorcode zurück. (Internal Server Error) Komischerweise wird aber der Quelltext den ich haben möchte trotzdem gesendet, jedoch gibt IdHTTP.Post() keinen zurück, wahrscheinlich weil davon ausgegangen wird das nichts Sinnvolles ankommt.

Der Errorcode kommt aber nur wenn ich als Content-Type auch "application/x-www-form-urlencoded" angebe, wenn nicht kommt zwar kein Error, jedoch wird die Abfrage auch nicht bestätigt.

Weiß jemand was hier los ist?

Vielen Dank schon mal für alle Antworten!

Geändert von SirThornberry ( 8. Sep 2010 um 10:21 Uhr) Grund: URL-unkenntlich gemacht
  Mit Zitat antworten Zitat