1

HTML ページを取得しようとすると、次のエラーが発生します。

The underlying connection was closed: The connection was closed unexpectedly

私が取得しているサイトは、IPに基づく保護を使用していると思います。

WebClient single_page_client = new WebClient();
single_page_client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)");
string cat_page_single = single_page_client.DownloadString(the_url);

どうすればできますか?Webclient でプロキシを使用するのはどうですか?

編集

このコードを使用すると、機能します。なんで?

HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(current_url);
webrequest.KeepAlive = true;
webrequest.Method = "GET";
webrequest.ContentType = "text/html";
webrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
//webrequest.Connection = "keep-alive";
webrequest.Host = "cat.sabresonicweb.com";
webrequest.Headers.Add("Accept-Language", "en-US,en;q=0.5");
webrequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0";

HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();

Console.Write(webresponse.StatusCode);
Stream receiveStream = webresponse.GetResponseStream();


Encoding enc = System.Text.Encoding.GetEncoding(1252);//1252
StreamReader loResponseStream = new StreamReader(receiveStream, enc);

string current_page = loResponseStream.ReadToEnd();

loResponseStream.Close();
webresponse.Close();
4

1 に答える 1

0

最初の要求は、結果の長さを示すヘッダーを使用しません。終了時に接続を閉じます。

2 番目の要求は長さヘッダーを利用し、指定されたバイト数を読み取り、接続を適切に閉じます。(サーバー主導の切断ではなく、クライアント側の制御下)

-また-

送信した URL により、サーバーでエラーが発生しました。サーバー ログまたはイベント ビューアにエラーはありますか?

于 2013-06-05T00:02:14.273 に答える