您好我需要在MY ASP.Net应用程序中处理外部API。
在我的应用程序中单击按钮,我必须将用户重定向到外部URL,同时POST一些用户凭据(用户名,密码)以允许访问那里(外部第三方页面)。
如果我尝试访问该外部页面而没有发布凭据(只是重定向),我将无法查看所需的页面,而是一条错误消息,指出无效的凭据(来自第三方页面)。
假设以下是信息
1. URL need to access : https://externalurl.com/external-page.asp
2. username : myusername
3. password : mypassword
不知道如何在ASP .Net中的C#代码中执行此操作。
我可以使用WebRequest
API发布数据,但无法在同一会话中重定向。如果有人可以指导这样做会很棒。提前谢谢...... !!!
编辑...
在我的情况下,我不能使用javascript或任何客户端脚本来执行此操作。
基本上我不需要读取POST数据的任何响应。我需要重定向到该页面(发布信息时的外部位置)
答案 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”属性。
因此,在客户端点击按钮的事件,您可以将隐藏字段的值(就像您问题中的值)设置为您需要的任何值。并且,当表单提交时,它们将以适当的名称发布。