我一直在寻找/询问周围,似乎无法想出这个。我有一个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();
}
非常感谢任何见解。
由于
答案 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)
您可以在按钮(或LinkButton或ImageButton)中设置PostBackUrl property
但是,这将执行标准的ASP.NET帖子(使用ViewState等)
根据您的目的,您还可以创建一个没有runat =“server”的单独内容,然后您可以将表单action property设置为您的页面。
编辑:没关系,如果您有Windows应用程序(不是Web应用程序),这将无效。至少,不是直接。