public class myCustomPanel : Panel
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "top_left_corner");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
base.RenderBeginTag(writer);
}
public override void RenderEndTag(HtmlTextWriter writer)
{
base.RenderEndTag(writer);
writer.RenderEndTag();
}
}
Класс WebClient должен быть более чем способен обрабатывать описанную вами функциональность, например:
System.Net.WebClient wc = new System.Net.WebClient();
byte[] raw = wc.DownloadData("http://www.yoursite.com/resource/file.htm");
string webData = System.Text.Encoding.UTF8.GetString(raw);
или (в дополнение к предложению Фредрика в комментариях)
System.Net.WebClient wc = new System.Net.WebClient();
string webData = wc.DownloadString("http://www.yoursite.com/resource/file.htm");
Когда Вы говорите, что это заняло 30 секунд, вы можете рассказать об этом немного больше? Есть много причин, почему это могло произойти. Медленные серверы, интернет-соединения, хитрая реализация и т. Д. И т. Д.
Вы можете пойти на уровень ниже и реализовать что-то вроде этого:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://www.yoursite.com/resource/file.htm");
using (StreamWriter streamWriter = new StreamWriter(webRequest.GetRequestStream(), Encoding.UTF8))
{
streamWriter.Write(requestData);
}
string responseData = string.Empty;
HttpWebResponse httpResponse = (HttpWebResponse)webRequest.GetResponse();
using (StreamReader responseReader = new StreamReader(httpResponse.GetResponseStream()))
{
responseData = responseReader.ReadToEnd();
}
Однако, в конце дня класс WebClient завершает эту функциональность для вас. Поэтому я бы посоветовал вам использовать WebClient и изучить причины 30-секундной задержки.
Если вы загружаете текст, то я бы порекомендовал использовать WebClient и получить потоковый ридер к тексту:
WebClient web = new WebClient();
System.IO.Stream stream = web.OpenRead("http://www.yoursite.com/resource.txt");
using (System.IO.StreamReader reader = new System.IO.StreamReader(stream))
{
String text = reader.ReadToEnd();
}
Если это занимает много времени, то это, вероятно, проблема в сети или проблема на веб-сервере. Попробуйте открыть ресурс в браузере и посмотрите, сколько времени это займет. Если веб-страница очень большая, вы можете захотеть смотреть ее в потоковом режиме, а не читать до конца, как в этом примере. Посмотрите http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx , чтобы узнать, как читать из потока.
Относительно этого предложения. Поэтому я бы предложил вам использовать WebClient и изучить причины 30-секундной задержки.
Из ответов на вопрос System.Net.WebClient неоправданно медленно
Попробуйте установить Proxy = null;
WebClient wc = new WebClient () ; wc.Proxy = null;
Благодарность Алексею Бурцеву
WebClient client = new WebClient();
using (Stream data = client.OpenRead(Text))
{
using (StreamReader reader = new StreamReader(data))
{
string content = reader.ReadToEnd();
string pattern = @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)";
MatchCollection matches = Regex.Matches(content,pattern);
List<string> urls = new List<string>();
foreach (Match match in matches)
{
urls.Add(match.Value);
}
}