ASP .Net,POSTING数据时重定向到外部页面

时间:2013-11-08 12:50:47

标签: c# asp.net post http-post

您好我需要在MY ASP.Net应用程序中处理外部API。

在我的应用程序中单击按钮,我必须将用户重定向到外部URL,同时POST一些用户凭据(用户名,密码)以允许访问那里(外部第三方页面)。

如果我尝试访问该外部页面而没有发布凭据(只是重定向),我将无法查看所需的页面,而是一条错误消息,指出无效的凭据(来自第三方页面)。

假设以下是信息

1. URL need to access : https://externalurl.com/external-page.asp
2. username           : myusername
3. password           : mypassword
  • 如果我做一个简单的HTML表单提交,它的工作效果非常好。

enter image description here

不知道如何在ASP .Net中的C#代码中执行此操作。

我可以使用WebRequest API发布数据,但无法在同一会话中重定向。如果有人可以指导这样做会很棒。提前谢谢...... !!!

编辑...

  1. 在我的情况下,我不能使用javascript或任何客户端脚本来执行此操作。

  2. 基本上我不需要读取POST数据的任何响应。我需要重定向到该页面(发布信息时的外部位置)

3 个答案:

答案 0 :(得分:0)

您可以使用HttpWebRequest执行此操作,但是您需要缓存您的凭据,以便它们随每个请求传递,而不仅仅是第一个;像这样:

// Set queryUrl to your URL, either hard-coded or passed in
HttpWebRequest req = WebRequest.Create(queryUrl) as HttpWebRequest;

// Set your credentials
NetworkCredential cred = new NetworkCredential(username, pwd, domain); 

// Setup cache to store your credentials for future requests
var cache = new CredentialCache {{queryUrl, "Ntlm", cred}};
req.Credentials = cache;

HttpWebResponse response = req.GetResponse() as HttpWebResponse;

答案 1 :(得分:0)

按此按钮

<asp:Button ID="Button1" PostBackUrl="https://externalurl.com/external-page.asp" runat="server" Text="Submit" /&GT;

希望这很清楚

http://msdn.microsoft.com/en-us/library/ms178140%28v=vs.100%29.ASPX

答案 2 :(得分:0)

您可以像现在一样设置表单方法和操作。或者在按钮上使用postbackURL。

问题是要在元素上设置名称以便能够提交它们。你必须使用JavaScript来设置隐藏的字段。因为.net更改了服务器端控件上呈现元素的“name”属性。

因此,在客户端点击按钮的事件,您可以将隐藏字段的值(就像您问题中的值)设置为您需要的任何值。并且,当表单提交时,它们将以适当的名称发布。