因此,标题建议如何对外部网站执行HTTP POST,同时还将用户重定向到那里?我正在寻找类似的东西:
Redirect("MyWebsite.com", HttpAction.POST, new RedirectData(new { item = "itemValue"}));
必须在ASP.NET mvc。
中完成修改
此行为是在外部网站上实施身份验证所必需的。验证算法:
到目前为止,我已经设法提出这个:
string url = "MyWebsite.com";
NameValueCollection formData = new NameValueCollection();
formData["ticket"] = Ticket.ticket;
WebClient webClient = new WebClient();
byte[] responseBytes = webClient.UploadValues(url, "POST", formData);
Response.BinaryWrite(responseBytes);
Response.Redirect("MyWebsite.com", true);
我得到的回应是我应该重定向到的网站的HTML,问题是 - 现在怎么样?如何告诉浏览器显示我通过响应获得的HTML?如果我只是重定向到“MyWebSite.com”,它将执行GET操作,这不是我想要的。对响应进行二进制写操作没有任何结果 - 它只是将POST操作的响应写入我当前正在执行的操作 - 没有重定向到“MyWebSite.com”。
答案 0 :(得分:2)
如果您要发布并重定向到外部网站,那么您应该直接将表单的操作转到该网址。没有理由处理你身边的任何事情。但是,除非您控制外部网站或进行某种安排才能执行此操作,否则很可能无法正常工作。几乎每个平台都实现了某种CSRF保护,以防止这种类型的事情。
答案 1 :(得分:1)
.NET 支持以下内容 -
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form- urlencoded";
var data = new Person
{
Name = "Glitch100"
}
var result = client.UploadString("http://www.website.com/page/", "POST", data);
Console.WriteLine(result);
}
WebClient或HttpWebRequest可以在服务器端用于POST数据。
好奇 - 想要这样做的原因是什么?
链接:
http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.110).aspx