从C#app发布到网页

时间:2010-05-17 15:19:35

标签: c# asp.net post

我一直在寻找/询问周围,似乎无法想出这个。我有一个C#应用程序,需要能够在应用程序中收集一些数据,弹出一个Web浏览器并将一些数据发送给它。

我可以从应用程序内部发布到网站,我可以显然将IE打开到某个链接,但我不能同时做到这两点。我无法直接POST到该链接。关于如何实现这一目标的任何想法?

    private void btnSubmit_Click(object sender, EventArgs e)
    {
        ASCIIEncoding encoding = new ASCIIEncoding();
        string postData = "Fullname=Test";
        byte[] data = encoding.GetBytes(postData);

        // Prepare web request...
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.url.com/Default.aspx");
        myRequest.Method = "POST";
        myRequest.ContentType = "application/x-www-form-urlencoded";
        myRequest.ContentLength = data.Length;

        Stream newStream = myRequest.GetRequestStream();

        // Send the data.
        newStream.Write(data, 0, data.Length);
        System.Diagnostics.Process.Start(myRequest.Address.ToString()); //open browser
        newStream.Close();
    }

非常感谢任何见解。

由于

2 个答案:

答案 0 :(得分:3)

如果这是一个WinForms应用程序,您可以使用WebBrowser控件在应用程序中托管Internet Explorer实例,而不是生成新进程。这样做的好处是你可以完全控制它,并且你可以POST到给定的URL:

private void btnSubmit_Click(object sender, EventArgs e)
{
    var postData = Encoding.Default.GetBytes("Fullname=Test");
    webBrowser1.Navigate(
        "http://www.url.com/Default.aspx", 
        null, 
        postData, 
        "Content-Type: application/x-www-form-urlencoded" + Environment.NewLine
    );
}

答案 1 :(得分:0)

您可以在按钮(或LinkBut​​ton或ImageButton)中设置PostBackUrl property

但是,这将执行标准的ASP.NET帖子(使用ViewState等)

根据您的目的,您还可以创建一个没有runat =“server”的单独内容,然后您可以将表单action property设置为您的页面。

编辑:没关系,如果您有Windows应用程序(不是Web应用程序),这将无效。至少,不是直接。