我想知道是否可以使用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
感谢您的帮助,
保
答案 0 :(得分:5)
我已经通过动态生成HTML页面来处理类似的情况,其中表单设置具有所有内容的隐藏值。页面上有一些Javascript,因此当它加载时,它将提交表单,因此必要时发布数据。
我怀疑这种方法适合你。
请记住,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数据更明显,但对于嗅探器来说不再安全。
所以,简而言之,没有。