Solved

C# - Webclient not working, perhaps a timeout issue

Posted on 2009-04-06
5
1,827 Views
Last Modified: 2012-05-06
Hi everyone,

I have made a simple webclient to download data from a website.  It is hit or miss becasue when the returned data takes a while I don't get the data but rather a timeout.  The data from what I understand is being retrieved but very slowely some times.

Can someone please show me an alternative or how to configure the timeout settings or persistancy of the webclient?  My coding skills are failry limited so if you could show the solution coded it would be very helpful.

Please let me extend my gracious thank you in advance.

Cheers - Dynotoe
try

			{ 

				// Get HTML data 

				System.Net.WebClient client = new System.Net.WebClient();

								Stream data = client.OpenRead(URL);	//Seems to break here and send to "catch"  Time out?

				// Also client.dDownloadFile(URL, "C:\\temp.asp"/* save file */);

				StreamReader reader = new StreamReader(data);

				string inputLine = "";
 

				statusBar1.Text = "Downloading data for  " + symbol;
 

				while( (inputLine = reader.ReadLine()) != null )

				{

					if(inputLine != "")

					{

						lineCount++;

						result.Add( inputLine.Replace(";",",") );

					}

				} 

				data.Close();

				if(lineCount < 18200)

				{

					richTextBox1.AppendText("  WARNING  " );

					richTextBox1.Select();		// Scrolls text box to end.

				}

			}

			catch(Exception ex)

			{

				Exception tempEx = ex;

				while(tempEx!=null)

				{

					richTextBox1.AppendText(tempEx.Message + "\r\n");

					tempEx=tempEx.InnerException;

				}
 

				lineCount = 0;

				richTextBox1.AppendText("      Failure.  New Attempt...  ");

				richTextBox1.Select();		// Scrolls text box to end.

				PauseForMilliSeconds( failureAndLowCountDelay );

				return(false);

			}

Open in new window

0
Comment
Question by:Dynotoe
  • 3
  • 2
5 Comments
 
LVL 14

Expert Comment

by:Daniel Junges
Comment Utility
Use HTTPWebRequest and HTTPWebResponse, it has an timeout property.
0
 

Author Comment

by:Dynotoe
Comment Utility
Hi junges,

Could you show me how to do this?

Thanks.

-D
0
 
LVL 14

Accepted Solution

by:
Daniel Junges earned 500 total points
Comment Utility

System.Net.HttpWebRequest wr = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create( "http://maps.weather.com/web/radar/us_orl_ultraradar_large_usen.jpg" );

System.Net.HttpWebResponse ws = (System.Net.HttpWebResponse)wr.GetResponse();

System.IO.Stream str = ws.GetResponseStream();

byte[] inBuf = new byte[100000];

int bytesToRead = (int)inBuf.Length;

int bytesRead = 0;

while ( bytesToRead > 0 ) {

    int n = str.Read( inBuf, bytesRead, bytesToRead );

    if ( n == 0 )

        break;

    bytesRead += n;

    bytesToRead -= n;

}

System.IO.FileStream fstr = new System.IO.FileStream( "weather.jpg", System.IO.FileMode.OpenOrCreate,

System.IO.FileAccess.Write );

fstr.Write( inBuf, 0, bytesRead );

str.Close();

fstr.Close();

Open in new window

0
 

Author Comment

by:Dynotoe
Comment Utility
Thanks junges!

Quick question regarding the bytes to read, does this require me to know the size of the data before hand because it is actually different all the time?  Also is there a default time out that I need to lengthen or does this not time out at all?

Cheers - Dyno
aka Sean (Boston)
0
 
LVL 14

Expert Comment

by:Daniel Junges
Comment Utility
you can do the follow:

System.IO.Stream rfile = resp.GetResponseStream();

int readed = 0;
do {
    readed = rfile.Read( buffer, 0, 1024 );
    // myLocalFile.Write( buffer, 0, readed );  
} while ( readed != 0 );
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

New Relic recently released its Synthetics product that allows for the creation of performance monitors that periodically test a site's performance. If you wish to test an interactive workflow New Relic employs Selenium WebDriverJS to run those test…
To properly understand GitHub, let’s divide it into two words ‘Git’ and ‘Hub’. Git is basically a ‘Distribution Version Control’ (DVC) and ‘Source Code Management’ (SCM) system widely used by software programmers while Hub means the efficient centre…
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
Learn how to set-up custom confirmation messages to users who complete your Wufoo form. Include inputs from fields in your form, webpage redirects, and more with Wufoo’s confirmation options.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now