Entwickler-Ecke
WinForms - Problem bei Quellcode auslesen.
Fakiz - Di 24.04.12 18:53
Titel: Problem bei Quellcode auslesen.
Guten Abend ich würde wie der Titel schon sagt gerne den Quellcode einer Internetseite (vermute mal das es sich um ein Serverinterface handelt) auslesen. Es handelt sich dabei um diese Seite:
*Klick Mich* [
http://mp3stream1.apasf.apa.at:8000/index.html]
Nun habe ich versucht über einen Webclient an den Quellcode zu kommen sowie über Webrequest bei beiden varianten erhalte ich folgende Fehlermeldung:
| Zitat: |
| Der Server hat eine Protokollverletzung ausgeführt.. Section=ResponseStatusLine |
Dieser fehler tritt in folgender Zeile auf:
Quelltext
1:
| string title = titleRegex.Match(webClient.DownloadString(Fm4Url)).NextMatch().Value; |
Weiß den jemand woran das liegt?
Oliver M. - Fr 27.04.12 15:44
Eigentlich müsstest du mit
C#-Quelltext
1:
| string sourcecode = new StreamReader(WebRequest.Create(uri).GetResonse().GetResponseStream()).ReadToEnd(); |
die Quellcode
jeder http- (und soweit ich weis auch https-) Website auslesen können.
Die Fehlermeldung, die du genannt hast, hört sich so an, als würde sich der Server nicht richtig an das http-Protokoll halten, was mich aber sehr wundert. Wenn du mir ein paar genauere Detais geben könntest, könnte ich dir vielleicht weiter helfen.
MfG Oliver.
Fakiz - Fr 27.04.12 16:55
Das dachte ich auch, ich hatte auch bislang noch nie Probleme beim auslesen eines Quellcodes. Die Fehlermeldung kommt nicht wenn ich die einstellungen meines Projekts ändere und
Quelltext
1:
| <httpWebRequest useUnsafeHeaderParsing = "false" /> |
auf True setze. Jetzt kann ich den Quellcode zwar "auslesen" das ganze geht dann aber in eine Endlosschleife über, abgesehen davon besteht der String den ich zurück bekomme aus lauter Sonderzeichen. Der Quellcode läßt sich allerdings via Controll (Webbrowser) ohne Probleme auslesen und verwerten.
Das sind jetzt alle wichtigen Infos die mir im Moment einfallen.
Trashkid2000 - Fr 27.04.12 21:51
Hi,
also bei der URL handelt es sich um einen mp3-Stream.
Was willst Du denn da auslesen? Der Stream ist doch für einen Player gedacht, um sich Internetradio anzuhören.
Oliver M. - So 29.04.12 10:13
Der Web-Browser öffnet es ausolut Sauber, das heißt, es hanselt sich um HTML. Außer dem ist es das http-Protokoll, was, egal was der Inhalt ist, vom HttpWebRespone ausgelesen werden müssste.
jaenicke - So 29.04.12 11:45
Der Webbrowser gibt auch einen Useragent an. Der Server prüft den und schickt schlicht je nach Useragent etwas anderes zurück. Und da du keinen angibst... Mit geht es problemlos, habs grad getestet.
Oliver M. - So 29.04.12 12:14
jaenicke, du hast recht. Macht aber nichts, denn man kann ja einfach einen UserAgent angeben:
C#-Quelltext
1: 2: 3: 4:
| string uri = "http://mp3stream1.apasf.apa.at:8000/index.html"; HttpWebRequest request = HttpWebRequest.CreateHttp(uri); request.UserAgent = "Mozilla"; string response = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd(); |
Dann klappts, auch wenn man
useUnsafeHeaderParsing nicht auf
true setzt :wink:.
MfG Oliver M.
jaenicke - So 29.04.12 13:01
Oliver M. hat folgendes geschrieben : |
| Dann klappts, auch wenn man useUnsafeHeaderParsing nicht auf true setzt :wink:. |
Habe ich ja geschrieben, dass es so geht (mein Testcode sah fast genauso aus). ;-)
Oliver M. - So 29.04.12 13:08
Du hast zwar gesagt, dass es geht und dass man einen UserAgent angeben muss, aber nicht wie. Also habe ich nochmel den Code gepostet.
Fakiz - So 29.04.12 23:18
Ich danke euch vielmals, jetzt kann ich mir den Webbrowser sparen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!