J'ai une API dans NETMF C# que j'écris qui inclut une fonction pour envoyer une requête HTTP. Pour ceux qui sont familiers avec NETMF, il s'agit d'une version fortement modifiée de l'exemple "webClient", une simple application qui montre comment soumettre une requête HTTP et recevoir une réponse. Dans l'exemple, il imprime simplement la réponse et renvoie le vide. Dans ma version, cependant, j'en ai besoin pour retourner la réponse HTTP. Pour une raison quelconque, Visual Studio signale que tous les chemins de code ne renvoient pas une valeur, même si, pour autant que je sache, ils le font.Visual Studio signale que tous les chemins de code ne renvoient pas de valeur, même s'ils le font
Voici mon code ...
/// <summary>
/// This is a modified webClient
/// </summary>
/// <param name="url"></param>
private string httpRequest(string url)
{
// Create an HTTP Web request.
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
// Set request.KeepAlive to use a persistent connection.
request.KeepAlive = true;
// Get a response from the server.
WebResponse resp = request.GetResponse();
// Get the network response stream to read the page data.
if (resp != null)
{
Stream respStream = resp.GetResponseStream();
string page = "";
byte[] byteData = new byte[4096];
char[] charData = new char[4096];
int bytesRead = 0;
Decoder UTF8decoder = System.Text.Encoding.UTF8.GetDecoder();
int totalBytes = 0;
// allow 5 seconds for reading the stream
respStream.ReadTimeout = 5000;
// If we know the content length, read exactly that amount of
// data; otherwise, read until there is nothing left to read.
if (resp.ContentLength != -1)
{
for (int dataRem = (int)resp.ContentLength; dataRem > 0;)
{
Thread.Sleep(500);
bytesRead = respStream.Read(byteData, 0, byteData.Length);
if (bytesRead == 0)
throw new Exception("Data laes than expected");
dataRem -= bytesRead;
// Convert from bytes to chars, and add to the page
// string.
int byteUsed, charUsed;
bool completed = false;
totalBytes += bytesRead;
UTF8decoder.Convert(byteData, 0, bytesRead, charData, 0,
bytesRead, true, out byteUsed, out charUsed,
out completed);
page = page + new String(charData, 0, charUsed);
}
page = new String(System.Text.Encoding.UTF8.GetChars(byteData));
}
else
throw new Exception("No content-Length reported");
// Close the response stream. For Keep-Alive streams, the
// stream will remain open and will be pushed into the unused
// stream list.
resp.Close();
return page;
}
}
Toutes les idées? Merci ...
BTW, avez-vous des onglets réglés à 4 espaces dans les options VS? –
Oui, pourquoi? .. ... (char limt ..) – chris12892
Oh, ouais, je vois. VS est réglé sur des onglets durs, ce que je suppose que SO n'a pas analysé correctement. – chris12892