Silverlight HTTP POST

Silverlight HTTP POST,silverlight,Silverlight,我只是想在上执行一个http post。以下是我一直尝试使用的代码: private void pif_test_conn() { Uri url = new Uri("http://www.test.com/test.asp?test1=3", UriKind.Absolute); if (httpResult == true) { HttpWebRequest request = (Http

我只是想在上执行一个http post。以下是我一直尝试使用的代码:

    private void pif_test_conn()
    {


        Uri url = new Uri("http://www.test.com/test.asp?test1=3", UriKind.Absolute);



        if (httpResult == true)
        {


            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = "POST";
           request.BeginGetResponse(new AsyncCallback(ReadCallback), request); 

        }



        return ;
    }


   private void ReadCallback(IAsyncResult asynchronousResult)
    {


        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;


        HttpWebResponse response =  (HttpWebResponse)request.EndGetResponse(asynchronousResult);

        using (StreamReader streamReader1 =  new StreamReader(response.GetResponseStream()))
        {

            string resultString = streamReader1.ReadToEnd();

             MessageBox.Show("Using HttpWebRequest: " + resultString, "Found", MessageBoxButton.OK);             
        }

    }

当我执行此代码时,我的程序触发应用程序未处理异常事件。不知道我做错了什么

为了发送HTTP POST,您需要通过调用方法将POST数据写入请求


这可能就是为什么你会得到一个例外;请告诉我们您获得的更具体答案的例外情况。

您是否试图发布到其他主机?这种行为可能会导致XSS安全问题,因此不可用


string responseValue = "";
AutoResetEvent syncRequest = new AutoResetEvent(false);
Uri address = new Uri(HtmlPage.Document.DocumentUri, "/sample.aspx");

WebRequest request = WebRequest.Create(address);
request.Method = "POST";
request.BeginGetRequestStream(getRequestResult =>
{
    // Send packet data
    using (Stream post = request.EndGetRequestStream(getRequestResult))
    {
        post.Write(buffer, 0, buffer.Length);
        post.Close();
    }

    // wait for server response
    request.BeginGetResponse(getResponseResult =>
    {
        WebResponse response = request.EndGetResponse(getResponseResult);
        responseValue=new StreamReader(response.GetResponseStream()).ReadToEnd();

        syncRequest.Set();

    }, null);

}, null);

syncRequest.WaitOne();

MessageBox.Show(
    "Using WebRequest: " + responseValue, 
    "Found", MessageBoxButton.OK);

HTH

您只能向应用程序所在的域发送HTTP请求

此限制可防止攻击。

关于


如果您在
SyncRequest.WaitOne()
调用中离开,调用会死锁,至少在Silverlight 4.0中是这样。

您会遇到什么异常?没有post数据?您的意思是发布或获取{System.Security.SecurityException-->System.Security.SecurityException:Security error.System.Security.SecurityException您处理silverlight POST的三重异步的格式非常棒。这比创建多个处理函数要紧凑得多。