【问题标题】:POST a HTML Form programmatically and display response以编程方式发布 HTML 表单并显示响应
【发布时间】:2011-09-07 11:19:13
【问题描述】:

我需要准备带有表单的 ASP.NET 站点,在后面的代码中填写表单,然后将表单提交到外部站点。

例如:用户打开 www.myshop.com/pay.aspx,他不需要填写任何内容,因为我在后面的代码中填写表单值,然后用户会自动重定向到外部站点 www.onlinepayments.com(带有表单POST 中发送的数据)。

我能够使其与常规隐藏表单和提交表单的 javascript 一起使用,但我不喜欢这种方式(用户可以看到 html)。

所以我在后面的代码中使用 WebRequest 类,就像在这个答案中一样:How do you programmatically fill in a form and 'POST' a web page?

但是在这个答案中,响应是字符串(目标站点 html)。我可以用这个字符串做什么?我希望我的用户看到目标站点(内容和 URL),就像使用常规 html POST 一样。

【问题讨论】:

  • 您与在线支付提供商谈过了吗?有些有服务器到服务器的 API,会给你一个重定向的 URL;有些将允许在提交之前对购物车进行签名。
  • @Rowland Shaw - 没关系 - 在线支付只是一个例子
  • 所以您的意思是您希望他们在一个 aspx 页面上填写表单,然后当他们点击提交时,您将表单值发送到另一个 aspx 页面?
  • @LoveMeSomeCode - 是的,但我将它们发送到外部页面(不是 aspx),它可以工作,但正是我想要的方式

标签: asp.net


【解决方案1】:

您收到作为字符串的响应 html - 您可以随心所欲地使用它(包括将 html 按原样渲染到您的页面,或者您可以在渲染之前自定义 html 等...)

【讨论】:

  • 但随后用户将看到我的 URL,而不是目标站点 URL,并且他们的 CSS 路径可能是相对的等。我希望用户在该站点上“出现”,因为它发生在常规帖子(该浏览器制作)
【解决方案2】:

这取决于目标站点的工作方式。如果生成的页面是静态的,您可以在以编程方式完成 POST 之后简单地 Response.Redirect 您的用户在那里。如果页面是基于某些会话或 cookie 值显示的,则您无法真正将它们重定向到那里。

【讨论】:

    【解决方案3】:

    好的,在这种情况下,您可以做的是更改 FORM 标记的操作参数。这将向另一个表单发送一个 POST 请求,其中包含所有表单变量。新表单将挖掘出那些 POST 变量并使用它们做它需要做的事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多