C# 如何发布数据并重定向到外部页面?
我在发布数据和重定向到外部URL时遇到问题。外部URL是一个在线支付网关,它只接受使用POST方法提交的表单 下面这样一个简单的html表单将不会出现任何问题C# 如何发布数据并重定向到外部页面?,c#,.net,post,redirect,webforms,C#,.net,Post,Redirect,Webforms,我在发布数据和重定向到外部URL时遇到问题。外部URL是一个在线支付网关,它只接受使用POST方法提交的表单 下面这样一个简单的html表单将不会出现任何问题 <html> <body> <form action="externalpage.url" method="post"> <input type="hidden" name="name1" value="1234"> <input type="hidden" name="name2"
<html>
<body>
<form action="externalpage.url" method="post">
<input type="hidden" name="name1" value="1234">
<input type="hidden" name="name2" value="abcd">
<input type="submit" value="Submit Form">
</form>
</body>
</html>
试用
Response.Redirect("http://www.microsoft.com");
您需要查看HttpWebRequest 这里有另一个问题,非常彻底地解释了你需要为你的问题做些什么
我想我找到了解决这个问题的方法。这就是我所做的 创建一个中间页面,例如DoPost.aspx
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Post Form</title>
<script>
function PostData() {
document.getElementById("form1").submit();
}
</script>
</head>
<body onload="PostData()">
<form id="form1" runat="server">
<div>
<asp:Literal ID="ltrPostData" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
因此,我们仍然可以使用Response.Redirect()将数据传递到外部链接,尽管我们需要浏览第二页。简而言之,Submit.aspx[GET]=>DoPost.aspx[Post]=>网关这是我为您提供的解决方案,一个简单而优雅的解决方案
由于Response.Redirect使用GET,网关将拒绝使用GET提交的任何数据:(在线支付!是https url吗?
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Post Form</title>
<script>
function PostData() {
document.getElementById("form1").submit();
}
</script>
</head>
<body onload="PostData()">
<form id="form1" runat="server">
<div>
<asp:Literal ID="ltrPostData" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var url = "external.url";
form1.Action = url;
ltrPostData.Text = "Create <input type='hidden' name='data name' value='data value' /> html controls from Request.QueryString() and assign the string value to the Literal control's Text property.";
}
}
//assume that the NameValueCollection object has already been created and populated
var redirectUrl = string.Format("{0}?{1}", "DoPost.aspx", BuildQueryString(data));
Response.Redirect(redirectUrl, true);
public static string BuildQueryString(NameValueCollection data)
{
// create query string with all values
return string.Join("&", data.AllKeys.Select(key => string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(data[key]))));
}