Веб-запросы в C # для SilverLight 2.0 - PullRequest
1 голос
/ 23 февраля 2009

Я использовал следующий код для получения простого веб-ответа от Apache 2.2 в SilverLight, но безрезультатно.

    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;
    }

У кого-нибудь нет лучшего способа сделать это?

Ответы [ 2 ]

1 голос
/ 23 февраля 2009

Вы пробовали WebClient? Это существует на серебряном свете и может облегчить жизнь. Предположительно, вы бы хотели UploadStringAsync.

Также - я считаю, что вам нужно использовать и абсолютный URL; если вы не хотите писать жесткий код (вполне разумно), вы можете получить свой хост от:

string url = App.Current.Host.Source.AbsoluteUri;

Затем используйте строковые / etc методы, чтобы сделать правильный "http://yoursite/whatever/your.page";

Обратите внимание, что silverlight разрешает (IIRC) только соединения с хост-сайтом.

0 голосов
/ 23 февраля 2009

Вы можете сделать вызов BeginGetResponse в качестве первого вызова в вашем тестовом примере. Вызов BeginGetRequestStream необходим только в том случае, если вы собираетесь передать некоторые данные POST на запрашиваемую страницу .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...