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 ?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top