2

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

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

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

假设以下是信息

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

在此处输入图像描述

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

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

编辑...

  1. 就我而言,我不能使用 javascript 或任何客户端脚本来执行此操作。

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

4

3 回答 3

0

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

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

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

于 2013-11-08T13:01:34.667 回答
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;
于 2013-11-08T12:56:30.290 回答
0

对您的按钮执行此操作

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

希望这很清楚

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

于 2013-11-08T12:57:20.803 回答