使用C#使用默认浏览器发送HTTP Post

时间:2011-01-06 21:30:36

标签: c# http browser post

我想知道是否可以使用C#中的计算机的默认浏览器发送POST数据。

情况如下。我的客户希望能够让他们的C#应用​​程序打开他们的浏览器并将客户端信息发送到webform。此网络表单将位于登录屏幕后面。应用程序方面的假设是,一旦客户端数据被发送到登录屏幕,登录屏幕就会将该信息传递到webform上以预先填充它。这将通过HTTPS完成,客户端希望通过POST而不是GET完成此操作,因为客户端信息将以纯文本形式发送。

我找到了一些做POSTS并处理请求的精彩解决方案。举个例子 http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx

所以TL; DR版本将是

1)打开浏览器

2)用POST数据打开一些URL

感谢您的帮助,

4 个答案:

答案 0 :(得分:5)

我已经通过动态生成HTML页面来处理类似的情况,其中表单设置具有所有内容的隐藏值。页面上有一些Javascript,因此当它加载时,它将提交表单,因此必要时发布数据。

我怀疑这种方法适合你。

  1. 生成字段和值的字典
  2. 使用Javascript生成HTML页面,以便在加载页面时自动提交
  3. 将页面写入磁盘上的临时位置
  4. 使用该页面启动默认浏览器
  5. 请记住,POST数据也是以明文形式发送的。 POST通常是指向多个字段的方式,因为您可以容纳更多数据(URL上的2048字节限制),并且您的用户有一个友好的URL可以在浏览器中查看。

答案 1 :(得分:0)

使用SSL时,没有任何内容以纯文本形式发送,而是加密的。除非您设置默认浏览器(IE,Firefox,Chrome等),否则您必须弄清楚默认浏览器是什么,并使用其API来完成这项工作(如果可能的话)。

通过调用带有Start Process的URL并传递查询字符串上的信息来打开默认浏览器可能必须更快,更有效率(这是做一个GET而不是POST,我知道它不是'你要的是什么。)

来自服务器的响应可能是重定向,重定向可以向下发送填写的表单(将值存储在会话或类似的东西中)。

这样,复杂性被推送到网站而不是Windows应用程序,如果出现问题,应该更容易更新。

HTH

答案 2 :(得分:0)

您可以在C#中编译逻辑,然后从PowerShell调用它吗?在PowerShell中,您可以very easily automate Internet Explorer。这只是IE,但您也可以使用WaitnN

答案 3 :(得分:-1)

您放在网址末尾的任何内容都会被视为查询字符串,这就是GET填充的内容。它比正文中的POSTed数据更明显,但对于嗅探器来说不再安全。

所以,简而言之,没有。