我已经使用以下代码来获得从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;
    }

是否这样做的任何人没有更好的方法?

有帮助吗?

解决方案

您是否尝试过 WebClient ?这种存在于Silverlight和可能使生活更轻松。想必你想要 UploadStringAsync

此外 - 我相信你需要使用绝对URL;如果你不想硬编码(相当合理),你可以从你的主机:

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

然后,使用串/等方法,使正确的“ HTTP://yoursite/whatever/your.page “;

注意,SILVERLIGHT只允许向主机站点(这个)连接。

其他提示

您可以做的 BeginGetResponse 拨打在您的样品测试情况下,第一个电话,在 BeginGetRequestStream 如果您正打算通过一些POST数据到只需要调用请求的网页。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top