HTTP POST-запросы в Silverlight - PullRequest
0 голосов
/ 17 июня 2011

Я работаю над приложением Silverlight, в котором есть форма, которая должна отправлять данные формы на страницу PHP с помощью метода POST.

Я использую следующий код, который дает мне исключение безопасности. Я предположил, что это междоменная ошибка. Я также проверил вид на localhost, но не работал. SOS

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://localhost/wb/cam.php", UriKind.Absolute));
                request.Method = "POST";
                // don't miss out this  
                request.ContentType = "application/x-www-form-urlencoded";
                request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);  

    void RequestReady(IAsyncResult asyncResult)  
{

    HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;  
    Stream stream = request.EndGetRequestStream(asyncResult);  

    // Hack for solving multi-threading problem  
    // I think this is a bug  
    this.Dispatcher.BeginInvoke(delegate()  
    {  
        // Send the post variables  
        StreamWriter writer = new StreamWriter(stream);  
        writer.WriteLine("imgdata="+textBox1.Text);  
        writer.Flush();  
        writer.Close();  

        request.BeginGetResponse(new AsyncCallback(ResponseReady), request);  
    });  
}  

// Get the Result  
void ResponseReady(IAsyncResult asyncResult)
{
    try
    {
        HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);

        this.Dispatcher.BeginInvoke(delegate()
        {
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);
            // get the result text  
            string result = reader.ReadToEnd();
        });
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}  

private void OnCaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
{
            btnSnapshot.IsEnabled = true;
            webCamVRect.Background = new ImageBrush {ImageSource = e.Result};
        }

private void button1_Click(object sender, RoutedEventArgs e)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://localhost/wb/cam.php", UriKind.Absolute));
    request.Method = "POST";
    // don't miss out this  
    request.ContentType = "application/x-www-form-urlencoded";
    request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);

}

1 Ответ

0 голосов
/ 13 февраля 2012

Вам нужно будет добавить clientaccesspolicy.xml в корневой каталог вашего сервера, который получает запрос. Также остерегайтесь виртуальных путей, так как иногда клиентская политика доступа помещается в виртуальный путь, а не в корень, где он должен быть. Удачи!

Тим

...