【发布时间】:2011-07-27 21:31:51
【问题描述】:
我正在尝试打开一个网页(不在我的控制之下),并预填充一些字段。我遇到了两个挑战。
- 我(我想我)需要重定向到页面本身,而不是简单地“抓取”它。
- 我不想提交表单 - 只需打开它并预先填写一些字段即可。我的用户需要检查输入,并在提交之前(可能)填写更多内容。
这是我迄今为止尝试过的(感谢 Peter Bromberg here 的博客帖子。)
Protected Sub btn_Submit_amazon_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_Submit_amazon.Click
Dim myURL As String = "http://www.amazon.co.uk/exec/obidos/search-handle-form"
Dim myFormData As New NameValueCollection()
myFormData("field-keywords") = "Harry Potter"
Dim myWebClient As New WebClient()
Dim myResponseBytes As Byte() = myWebClient.UploadValues(myURL, "POST", myFormData)
Dim myResponse As String = Encoding.UTF8.GetString(myResponseBytes)
Response.Write(myResponse)
End Sub
这种方法的缺点是 1)它提交表单,以及 2)这对于他使用的亚马逊 url 工作正常,但是当我尝试对 .aspx 页面执行此操作时,它根本不起作用(表单字段中没有任何内容)。
情况是,我的公司已将许多传统的纸质表格放到网上。离开请求,合同,或者你的名字。这在审批路由方面是一个很大的改进。但是,我们现在的情况是,我们将所有这些数据输入了两次——一次输入数据库以供管理使用,然后第二次输入表格以供批准。我想做的是让某人像他们已经做的那样将数据输入我们的数据库(通过我已经构建的 asp.net 应用程序),然后当他们准备好时,单击一个将数据移植到的按钮在线审批表。
顺便说一句——在线审批流程由不同的部门管理,他们不愿意以任何方式修改他们的流程。所以任何解决这个问题的方法都必须从我这边开始。我知道从我的数据库中获取他们的表单查找数据会更有意义,但不幸的是(政治上)这是不可能的。
有这方面的经验吗?
编辑 ----------
我试图妥协并允许提交表单——到目前为止还没有任何乐趣。发现一篇文章暗示视图状态可能是使用 asp.net 表单执行此操作的问题,因此我尝试发布视图状态,但它不起作用(500 服务器错误)。这是文章:http://www.canaware.com/default.aspx?g=posts&t=569
所以现在我正在尝试通过 iframe 来执行此操作,根据我从 @Guffa 得到的答案之一。
【问题讨论】:
-
这是一个非常古老的问题,但现在您可以使用浏览器自动化,例如
Watin,并完全控制浏览器(包括预填充字段)。我们已经在多个需要在系统/网站之间共享数据的项目上做到了这一点。
标签: asp.net forms webclient webrequest