我想使用asp.net将用户名和密码发布到远程网站的登录页面并传递它,以访问网站上的登录页面。 换句话说,假设网站上有一个页面,我会浏览它,从中获取一些内容,但在此之前需要登录。 如何调用该登录页面并从asp.net应用程序发布用户名和密码以传递它。
提前致谢
答案 0 :(得分:6)
将它们作为查询字符串传递的注释仅适用于GET
个参数。这适用于POST
。如您所见,我使用表单条目username
,password
和login
(按钮),但在您的情况下,它可能是完全不同的值。因此,使用Fiddler之类的工具来捕获正常登录发送的值。当我做类似的事情时,我不得不使用支持cookie的webclient,因为该服务使用cookie作为会话值。您尝试访问的服务可能使用查询会话字符串 - 它完全取决于服务。
我在这样做时遇到的另一个问题是我必须从html页面获取会话ID并将其发送以进行记录。我没有在这里包含代码,但是如果你需要的话我会拥有它:)
var client = new CookieAwareWebClient();
client.Encoding = Encoding.UTF8;
// Post values
var values = new NameValueCollection();
values.Add("username", someusername);
values.Add("password", somepassword);
values.Add("login", "Login"); //The button
// Logging in
client.UploadValues(loginPageUrl, values); // You may verify the result. It works with https :)
// Download some secret page
var html= client.DownloadString(someurl);
<强> CookieAwareWebClient 强>
public class CookieAwareWebClient : WebClient
{
private CookieContainer cookieContainer = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = cookieContainer;
}
return request;
}
}
答案 1 :(得分:3)
尝试阅读本文 - &gt; http://www.terminally-incoherent.com/blog/2008/05/05/send-a-https-post-request-with-c/
如果你使用firefox - 下载“tamper-data”和“live http-headers”以查看传递给登录站点的信息
使用实时http-header,您可以看到在POST中传递了哪些数据
答案 2 :(得分:0)
假设您想要重新访问www.ABC.com
构造类似
的查询字符串http://abc.com/products.aspx?field1=value1&field2=value2
在另一页上获取此值。但建议使用POST方法,希望这个帮助