Requêtes Web en C# pour SilverLight 2.0
-
05-09-2019 - |
Question
J'ai utilisé le code suivant pour obtenir une simple réponse Web d'Apache 2.2 dans SilverLight, en vain.
private void bDoIt_Click(object sender, RoutedEventArgs e)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("/silverlight/TestPage2.html"));
request.Method = "POST";
request.ContentType = "text/xml";
request.BeginGetRequestStream(new AsyncCallback(RequestProceed), request);
}
private void RequestProceed(IAsyncResult asuncResult)
{
HttpWebRequest request = (HttpWebRequest)asuncResult.AsyncState;
StreamWriter postDataWriter = new StreamWriter(request.EndGetRequestStream(asuncResult));
postDataWriter.Close();
request.BeginGetResponse(new AsyncCallback(ResponceProceed), request);
}
private void ResponceProceed(IAsyncResult asuncResult)
{
HttpWebRequest request = (HttpWebRequest)asuncResult.AsyncState;
HttpWebResponse responce = (HttpWebResponse)request.EndGetResponse(asuncResult);
StreamReader responceReader = new StreamReader(responce.GetResponseStream());
string responceString = responceReader.ReadToEnd();
txtData.Text = responceString;
}
Quelqu'un n'a-t-il pas une meilleure méthode pour procéder ?
La solution
Avez-vous essayé WebClient
? Cela existe sur silverlight, et pourrait rendre la vie plus facile. On peut supposer que vous voudriez UploadStringAsync
.
En outre - je crois que vous devez utiliser et url absolue; si vous ne voulez pas coder en dur (tout à fait raisonnable), vous pouvez obtenir votre hôte de:
string url = App.Current.Host.Source.AbsoluteUri;
Utilisez ensuite la chaîne / méthodes etc pour faire le bon « http: //yoursite/whatever/your.page ";
Notez que SilverLight n'autorise les connexions (IIRC) sur le site d'accueil.
Autres conseils
Vous pouvez faire le CommencerObtenirRéponse appelez comme premier appel dans votre exemple de scénario de test, le DébutGetRequestStream l'appel n'est nécessaire que si vous avez l'intention de transmettre certaines données POST à la page demandée.