2016-07-13 16 views
0

Ich möchte mehrere Webseiten für ein Projekt zu Hause analysieren. Normalerweise verwende ich c#HttpWebRequest und HttpWebResponse und es funktioniert gut. Aus irgendeinem Grund habe ich nicht die gleichen Daten in meinem HttpWebResponse als in fiddler für die gleiche Anfrage. Ich verwende die gzip Kompression (rq.AutomaticDecompression = DecompressionMethods.GZip) sonst ist nichts besonderes. Ich denke, die Webseite, die ich analysieren möchte, hat einige ajax und telerik (rad) Anruf. Aber warum habe ich die ganze Seite (800 Zeilen) in fiddler und teilweise Seite (300 Zeilen) in meiner C# App.C# HttpResponse anders als Fiddler

Irgendeine Idee? Hinweis?

+0

Was Sie in der HttpWebResponse sehen, sollte das gleiche wie fiddler sein (wenn Sie nur eine einzige Fiddler-Sitzung betrachten), wenn Sie identische Anfragen an den Server gesendet haben. Senden Sie den Benutzer-Agent und alle Cookies, die Sie möglicherweise senden, wenn Sie die Anfrage im Browser stellen? Können Sie einige Screenshots hinzufügen und auf die Unterschiede hinweisen? –

+0

Es ist schwierig, einen nützlichen Screenshot hinzuzufügen. Ich habe den Aufruf in Fiddler überprüft, der von meiner Anwendung ausgeführt wurde (nicht von einem Webbrowser). Wenn ich den Inhalt meiner C# -Zeichenfolge und der Fiddler-Textansichtsregisterkarte vergleiche, habe ich nicht die gleichen Informationen. Ich dachte, es wäre die Dekompression, aber ohne Gzip kann ich den Stream nicht lesen. –

+0

Die rohen Bytes Ihrer HttpWebResponse und die rohen Bytes, die über Fiddler gestreamt werden, wären identisch, außer Sie hätten einen Fehler in fiddler entdeckt, aber das ist unwahrscheinlich. Haben Sie etwas dagegen, die URL, die Sie anfordern, von Ihrer Bewerbung zu teilen? –

Antwort

0

Ich werde einen Stich in diesem einen.

In Code erhalten Sie nicht die vollständige Antwort, da es nicht das gesamte Javascript und andere verknüpfte Ressourcen darstellt. Mit Fiddler sehen Sie die volle Antwort in es ist vollständig.

Nun, was Sie tun können, ist ein kopfloser Browser verwenden, sind sie ein paar von ihnen Selen, Phanthomjs. Sie können warten, bis die gesamte Seite gerendert wurde. Sie können auch den vollständigen Stack-Trace sehen, den Sie in C# nicht so verwenden können, wie Sie ihn verwenden.

Sie sind über NuGet

+0

Ich werde es versuchen. Ich habe mit HtmlAgilityPack versucht, aber ich habe das gleiche Ergebnis. –

+0

HTMLAgilityPack ist kein kopfloser Browser (Er nimmt nur das, was Sie eingeben) – Henry

0

OK, dann ist es sich heraus, dass ich mit der neuesten Version meine VS2015 aktualisiert (Update 3) und ich bekomme das gute Ergebnis (volle Seite, identisch wie meine Fiddler response) .. Ich nicht warum, nicht einmal sicher, ob es kein Neustart Problem ist .. Derselbe Code .. gleich. NET Framework .. sowieso .. Problem gelöst.