C# ASP.Net,在发布数据时重定向到外部页面
您好,我需要在我的ASP.Net应用程序中处理外部API 在我的应用程序中单击一个按钮,我必须将用户重定向到一个外部URL,同时发布一些用户凭据(用户名、密码),以允许访问该URL(外部第三方页面) 如果我试图访问该外部页面而不发布凭据(只是重定向),我将无法查看所需的页面,并显示一条错误消息,说明凭据无效(来自第三方页面) 假设以下是信息C# ASP.Net,在发布数据时重定向到外部页面,c#,asp.net,post,http-post,C#,Asp.net,Post,Http Post,您好,我需要在我的ASP.Net应用程序中处理外部API 在我的应用程序中单击一个按钮,我必须将用户重定向到一个外部URL,同时发布一些用户凭据(用户名、密码),以允许访问该URL(外部第三方页面) 如果我试图访问该外部页面而不发布凭据(只是重定向),我将无法查看所需的页面,并显示一条错误消息,说明凭据无效(来自第三方页面) 假设以下是信息 1. URL need to access : https://externalurl.com/external-page.asp 2. username
1. URL need to access : https://externalurl.com/external-page.asp
2. username : myusername
3. password : mypassword
- 如果我做一个简单的HTML表单提交,它的工作非常出色,如下所示
WebRequest
api发布数据,但无法在同一会话中重定向。如果有人能指导做这件事,那就太好了。提前感谢
编辑…
您可以使用
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;
你喜欢这个扣子吗
您可以像现在一样设置表单方法和操作。或者在按钮上使用postbackURL
问题是在元素上设置名称以便能够提交它们。必须使用javascript设置隐藏字段。因为.net更改了服务器端控件上呈现元素的“name”属性
因此,在按钮的客户端单击事件中,您可以将隐藏字段的值(就像您问题中的字段)设置为您需要的任何值。并且,当表单提交时,它们将以专有名称发布。尝试使用此类WebClient为什么表单发布解决方案不够?如果没有客户端脚本,我认为这是唯一的方法,除非您将服务器用作客户端和外部服务器之间的代理。换句话说,您不会重定向客户端,而是充当与双方(外部服务器和客户端)进行通信的中间人。您好,mikey,是的,如果任何ASP.Net API都无法做到这一点,我愿意使用表单提交。但是用户名和密码值必须根据不同的用户动态设置。在这里怎么做有点困惑。如果你能详细解释一下,那就太好了。谢谢…@JibW-“用户名和密码值必须根据不同的用户动态设置”我试过这个,但是如何以这种方式发布数据?在我的例子中,“username:myusername”和“password:mypassword”只有2个文本框和按钮,并确保文本框的客户端id与“username”和密码匹配。您可以尝试将clientid模式设置为静态。或者像我刚才解释的那样使用jquery。刚刚创建了两个文本框,将ID字段命名为与之完全相同的名称,并添加了PostBackUrl属性。它试图访问该位置,但数据未发布。。。因此,当我使用正常重定向查看时,会看到错误消息。。。。