Yes, since you do not pass response anywhere you need to dispose of it. You should also catch a WebException and remove the stream from there too (I would also expect that a delete response or even a request would close all related resources, but unfortunately I have never seen documentation that confirms this cascading delete behavior for a Response object) .
You also need to close / delete the request, as it is a one-time object. This is indicated in the GetResponse note:
Multiple GetResponse calls return the same response object; The request has not been reissued.
Side note. Consider requesting a HEAD so that you don't receive a stream at all (see Method Property to Use).
var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "HEAD";
source share