c# - HttpWebRequest.GetResponse methods throws 404 exception -


i want download 1 image url using console application.

i have used following code:

string sourceurl = "http://i.ytimg.com/vi/pvbnybsui9a/default.jpg"; // not found                 //string sourceurl = "http://i.ytimg.com/vi/orxzan1fzuy/default.jpg"; // found                 httpwebrequest request = (httpwebrequest)webrequest.create(sourceurl);                 httpwebresponse response = null;                 try                 {                     response = (httpwebresponse)request.getresponse();                 }                 catch (exception)                 {                  } 

above code throws exception in line "response = (httpwebresponse)request.getresponse();"

but when accessing "http://i.ytimg.com/vi/pvbnybsui9a/default.jpg" url in browser image display.

what missing here?

i tried url "http://i.ytimg.com/vi/pvbnybsui9a/default.jpg" in chrome developer tools. receives 404, response includes image, displays.

your code not cause of exception. site returning 404 , code gets exception.

you write logic @ response if 404 , decide whether take anyway, browser does.

it looks can response returned site if catch webexception, allows see http request status , response, per documentation.

example .net 4.5 doc...

try        {              // creates httpwebrequest specified url.              httpwebrequest myhttpwebrequest = (httpwebrequest)webrequest.create(url);              // sends httpwebrequest , waits response.             httpwebresponse myhttpwebresponse = (httpwebresponse)myhttpwebrequest.getresponse();              if (myhttpwebresponse.statuscode == httpstatuscode.ok)                console.writeline("\r\nresponse status code ok , statusdescription is: {0}",                                     myhttpwebresponse.statusdescription);             // releases resources of response.             myhttpwebresponse.close();           }      catch(webexception e)         {             console.writeline("\r\nwebexception raised. following error occured : {0}",e.status);         }     catch(exception e)     {         console.writeline("\nthe following exception raised : {0}",e.message); 

webexception has response , status properties. looks .net way deal catch webexception , determine how handle based on status , response content (if necessary).


Comments