2012-04-15 9 views
1

Ich möchte die HttpWebRequest für die folgende Seite bekommen HTML verwenden:Kann nicht HTML-Seite erhalten

http://inkdispatch.com/brother

Derzeit verwende ich:

public static string getHTML(string url) 
    { 
     string responseData = ""; 
     try 
     { 
      // System.Threading.Thread.Sleep(1000 * 1); 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.Accept = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; 
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"; 
      request.Timeout = 60000; 
      request.AllowAutoRedirect = false; 
      request.Method = "GET"; 
      request.Referer = "inkdispatch.com"; 
      request.CookieContainer = yummycookies; 
      request.KeepAlive = true; 

      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      if (response.StatusCode == HttpStatusCode.OK) 
      { 
       Stream responseStream = response.GetResponseStream(); 
       StreamReader myStreamReader = new StreamReader(responseStream); 
       responseData = myStreamReader.ReadToEnd(); 
      } 
      foreach (Cookie cook in response.Cookies) 
      { 
       yummycookies.Add(cook); 
      } 
      response.Close(); 
     } 
     catch (Exception e) 
     { 
      responseData = "An error occurred: " + e.Message; 
     } 

     return responseData; 

    } 

Aber ich sehe nicht alles, was ich bekommen Antwort ohne Fehler nur gesagt, durchgezogen und wenn ich den gleichen Link im Browser setzen, funktioniert es. Der Link ist mit einem Token verbunden, aber ich bekomme das von der Hauptseite, immer noch das gleiche Problem, jede Hilfe.

UPDATE

ich gerade gesetzt:

request.AllowAutoRedirect = true; 

aber ich bekomme Fehler:

Too many automatic redirections were attempted. 
    at System.Net.HttpWebRequest.GetResponse() 
    at inkdispatchcomScraper.Program.getHTML(String url) 

Und ich habe Fiedler offen, die ihren den Link wieder schlagen zeigt wieder:

# Result Protocol Host URL Body Caching Content-Type Process Comments Custom 
72 301 HTTP inkdispatch.com /brother?zenid=00810c6a184e63149cdca848c7f02871 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
73 301 HTTP inkdispatch.com /brother?zenid=32cf6d38541a90658d39785b6cd64fbc 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
74 301 HTTP inkdispatch.com /brother?zenid=70d0d5eaa10175d74933ba00d47876f8 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
75 301 HTTP inkdispatch.com /brother?zenid=fa45c256a07a9450274269cfa4a4e64a 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
76 301 HTTP inkdispatch.com /brother?zenid=1fb7677a7e6ae0ca32a154ebcc42e043 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
77 301 HTTP inkdispatch.com /brother?zenid=39923f8100276b1c0fa5ccfb1f8d222c 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
78 301 HTTP inkdispatch.com /brother?zenid=fef228719b375ac012c4755793a0027a 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
79 301 HTTP inkdispatch.com /brother?zenid=5c2babf5e6b9b0834f605734441ba208 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
80 301 HTTP inkdispatch.com /brother?zenid=711bdefa3ca7cccebf63b9b8a3734be1 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
81 301 HTTP inkdispatch.com /brother?zenid=c55d1b6166994be1436c9473a1519abe 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
83 301 HTTP inkdispatch.com /brother?zenid=cc66424548f23c3c64b2e0054289283f 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
84 301 HTTP inkdispatch.com /brother?zenid=6f05f06093cd345d10ca729117994ac0 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
85 301 HTTP inkdispatch.com /brother?zenid=4a2ab4d3824c4850f544f28cd71bc1bb 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
86 301 HTTP inkdispatch.com /brother?zenid=6c9d0acd69fc22821014c7e3263da7b6 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
87 301 HTTP inkdispatch.com /brother?zenid=fff05b8df3a1488add36591a2687a830 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
88 301 HTTP inkdispatch.com /brother?zenid=b10facbe8bc9b9a355fe648649067f98 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
89 301 HTTP inkdispatch.com /brother?zenid=8b767c98491178e54d12b4e85ff02b2e 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
90 301 HTTP inkdispatch.com /brother?zenid=9f0b8cb119fee9a4e276bcae5f13772d 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
91 301 HTTP inkdispatch.com /brother?zenid=943076fabf058eb1316cfa86aadb1dec 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
92 301 HTTP inkdispatch.com /brother?zenid=8bd0335032a58b9c399706cd9c695901 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
93 301 HTTP inkdispatch.com /brother?zenid=a1ba5e21f0af2750d398484e063e8303 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
94 301 HTTP inkdispatch.com /brother?zenid=e704b2951b1d136c195fd02ad4abec93 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612   
95 301 HTTP inkdispatch.com /brother?zenid=6d606d0785f19c17ccb1868577a9d546 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html inkdispatchcomscraper.vshost:4612 

ANOTHER UPDATE

Ich habe gesehen, wenn ich es im IE öffne es verwendet die Umleitung zu/Bruder, aber im Falle von Code bekommt es eine andere ZENID Ameise weiter und das passiert weiter.

Antwort

4

Set request.AllowAutoRedirect = true;

EDIT

Und für Ihre zweite Frage, erklären, wie unten yummycookies.

public static string getHTML(string url) 
{ 
    CookieContainer yummycookies = new CookieContainer(); 
    ... 
} 
+0

Ich habe die Beschreibung aktualisiert bitte überprüfen. – confusedMind

+0

Aber es funktioniert richtig auf meinem PC. (Ich musste nur sagen 'static CookieContainer yummycookies = new CookieContainer();) –

+0

welchen Link triffst du? es funktioniert perfekt für http://inkdispatch.com/ aber keinen anderen Link. – confusedMind

0

Als ich versuchte, den Code zu testen, es scheiterte, aber ein weiterer Test fand ich die folgende Fehlermeldung „Zu viele automatische Umleitungen versucht wurden.“

Während Sie Ihren Code aktualisieren und erneut testen, funktioniert es gut auf Ihrer bereitgestellten URL, HTML ordnungsgemäß abgerufen. Code ist hier.

public static string GetHtml2(string urlAddr) 
{ 
    if (urlAddr == null || string.IsNullOrEmpty(urlAddr)) 
    { 
     throw new ArgumentNullException("urlAddr"); 
    } 
    else 
    { 
     string result; 

     //1.Create the request object 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddr); 
     //request.AllowAutoRedirect = true; 
     //request.MaximumAutomaticRedirections = 200; 
     request.Proxy = null; 
     request.UseDefaultCredentials = true; 

     //2.Add the container with the active 
     CookieContainer cc = new CookieContainer(); 


     //3.Must assing a cookie container for the request to pull the cookies 
     request.CookieContainer = cc; 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     using (StreamReader sr = new StreamReader(response.GetResponseStream())) 
     { 
      result = sr.ReadToEnd(); 
      //Close and clean up the StreamReader 
      sr.Close(); 
     } 
     return result; 
    } 
} 

Hoffe, das wird in Ordnung sein.

+0

danke dasselbe Problem Ich denke, einige Internet-Einstellung auf meiner Seite vielleicht: Es hat funktioniert, als ich thi: System.Net.ServicePointManager.Expect100Continue = false; WebHeaderCollection myWebHeaderCollection = request.Headers; // Fügen Sie den Accept-Language-Header (für Dänisch) in die Anfrage ein. myWebHeaderCollection.Add ("Annehmen-Sprache: en-US"); myWebHeaderCollection.Add ("Accept-Encoding", "gzip, deflate"); myWebHeaderCollection.Add ("Cookie", "zenid = 9ea4d211ba2aa64cbaa148df5de4ab10"); – confusedMind

+0

In den meisten Fällen, wenn Sie die Codierung "Accept-Encoding" aktiviert haben, funktioniert "gzip, deflate" live fetching nicht, besonders in Fällen, in denen die Zielwebsite diese Art der Kodierung aktiviert hat. – irfanmcsd

+0

Ja, ich benutze das überhaupt nicht, aber in diesem Fall musste ich alles replizieren, was nur funktionierte. – confusedMind