在控制器操作中,我使用WebRequest手动将表单发送到远程URL。我成功地收到了一个包含要显示的html页面的WebResponse。我想将该响应“粘贴”为操作的响应(类型为HttpResponseBase)。一个动作通常会返回一个ActionResult,那么如何结束我的控制器操作,以便WebResponse成为结果?WebResponse到HttpResponseBase。可能吗?
注意:浏览器中的Url也必须成为响应的URL。
更新:这是目标。这是在PayPal结帐页面上。我想要一个简单的结帐按钮链接到我的某个操作,而不是在所有购物车隐藏字段和结算提交按钮的窗体中显示。在这个动作中,我将使用表单准备WebRequest并将其发送到PayPal。在一个动作中这样做也允许我将未激活的订单存储在数据库表中,这样当订单确认到达时,我可以将其与存储的订单进行比较并将其激活。
解决方案:感谢那些谁回答指出,这将不可能重定向与POST。看来,我没有义务通过POST重定向到PayPal。相反,我可以在查询字符串中构建一个包含所有购物车数据的URL并重定向到它。从控制器操作方法执行它仍然允许我将挂起的订单存储在数据库中。
感谢
谢谢。问题是内容不够(请参阅上面的更新)。结果还包含标题和可能的cookie。如果我只是设置内容,所有这些数据将不会被使用。最终结果是浏览器中的Url不正确(它应该是https:// ... paypal .../....)。现在我正在使用PayPal沙盒进行测试。即使我在同一浏览器中登录沙箱,贝宝的回应是我没有登录到沙箱。 – 2009-11-11 15:46:13
我不熟悉贝宝,但为什么你使用WebRequest来做到这一点?我会假设他们有一个API或其他东西。你应该看看。至于我的解决方案,您可以轻松将WebResponse中的Cookie和其他标题复制到您的操作的响应中。 – Matthew 2009-11-11 15:57:32