1

我一直在使用以下代码从 SilverLight 中的 Apache 2.2 获取简单的 Web 响应,但无济于事。

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

有没有人没有更好的方法来做到这一点?

4

2 回答 2

1

你试过WebClient吗?这存在于 silverlight 上,可能会使生活更轻松。想必你会想要UploadStringAsync.

另外-我相信您需要使用绝对网址;如果您不想硬编码(相当合理),您可以从以下位置获取主机:

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

然后使用字符串/等方法制作正确的“ http://yoursite/whatever/your.page ”;

请注意,silverlight 仅允许 (IIRC) 连接到主机站点。

于 2009-02-23T10:50:56.503 回答
0

您可以将BeginGetResponse调用作为示例测试用例中的第一个调用,仅当您打算将一些 POST 数据传递到请求的页面时才需要调用BeginGetRequestStream 。

于 2009-02-23T13:08:54.377 回答