0

我正在使用 C# 控制台应用程序进行网络解析。

我的代码是:

var req = WebRequest.Create("http://watch.squidtv.net/");
req.BeginGetResponse(r =>
{
     var response = req.EndGetResponse(r);
     var stream = response.GetResponseStream();
     var reader = new StreamReader(stream, true);
     var str = reader.ReadToEnd();
     Console.WriteLine(str);
}, null);

此代码在其他 URL 上运行良好,但是当我将 URL 更改为http://watch.squidtv.net/时,出现了两个问题 -

第一个 - 它没有下载它的 html。
第二个-它产生CPU的声音。

然后我更改了代码并像这样使用 webClient -

string htmlCode = "";
htmlCode = client.DownloadString("http://watch.squidtv.net");
Console.WriteLine(htmlCode);

但问题是一样的:(
可能是什么问题???

4

2 回答 2

1

我找到了解决方案,problelm is HTML header in HTML header there is gzip object Encoding the httpwebrequest is not accepting the gzip header which cause the problem when I using this code问题解决了

   HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://watch.squidtv.net/");
        req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
        req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        req.Method = "GET";
        req.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";
        string htmlCode;
        using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
        {
            htmlCode = reader.ReadToEnd();
        }
于 2013-07-05T07:44:56.733 回答
0

可能您必须在您的 WebRequest 中指定更多内容,以便 SquidTV 服务器可以知道将 HTML 发送回您的一个想法。

考虑在浏览器中,有很多标头会发送到服务器。如果您想查看使用FiddlerWireShark查看发送的所有额外数据。

防火墙可能是另一个问题,因为您发送的请求可能不允许,因此没有任何返回。这将是我可能会建议使用 WireShark 或 Fiddler 等中间工具的地方,这些工具可能有助于查看请求是否至少发出。

于 2013-07-04T14:39:02.803 回答