Je reçois cet avertissement sur response.GetResponseStream()
Comment dois-je gérer cela?
// Get response
using (var response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
if (response != null)
{
var reader = new StreamReader(response.GetResponseStream());
var responseString = reader.ReadToEnd();
return responseString;
}
}
Par souci de clarté, à partir de réponses erronées :
Cette ligne est pas où l'avertissement se produit:
using (var response = request.GetResponse() as HttpWebResponse)
Cette ligne est où l'avertissement se produit:
var reader = new StreamReader(response.GetResponseStream());
var reader = new StreamReader(response.GetResponseStream());
Je soupçonne que le paramètre du constructeur StreamReader
a un attribut notnull
. Essayez ce qui suit:
var stream = response.GetResponseStream();
if (stream == null)
// throw an exception
var reader = new StreamReader(stream);
Essayez de raccourcir votre code et d'encapsuler les ressources jetables dans des instructions using
:
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
ou même plus loin:
using (var client = new WebClient())
{
return client.DownloadString("http://foo.bar.com/")
}
Si l'objet response
est de type HttpWebRequest
, la réponse sera toujours de type HttpWebResponse
. Si ce n'est pas le cas, cela ne le sera jamais.
Soit vous testez ceci au mauvais endroit (pourquoi appelez .GetResponse()
si vous pourriez recevoir une autre classe dérivée de WebRequest
juste pour jeter les résultats) ou test inutile sans effet.
Je suppose que le revendeur s’inquiète de cela, malgré le test de null en dessous. Je choisirais soit une distribution directe:
using (var response = (HttpWebResponse)request.GetResponse())
using(var reader = new StreamReader(response.GetResponseStream()))
return reader.ReadToEnd();
Ou bien, considérant que vous n'utilisez aucun membre de HttpWebResponse
qui ne soit pas dérivé de WebResponse
, aucun casting:
using (var response = (HttpWebResponse)request.GetResponse())
using(var reader = new StreamReader(response.GetResponseStream()))
return reader.ReadToEnd();