我正在尝试使用其他人的证书查看报告。我对如何分配凭据然后导航到URL感到困惑。
问题: 是否可以将凭据分配给WebRequest然后导航到url?可能是这样的:
WebRequest request = WebRequest.Create(repUrl);
request.Credentials = new NetworkCredential("UserName", "Password");
webBrowser1.Navigate(request.RequestUri);
我知道当我使用这样的东西时我能够看到报告。但是我无法单击该报告:
WebRequest request = WebRequest.Create(repUrl);
request.Credentials = new NetworkCredential("Username", "Password");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader receiveStream = new StreamReader(response.GetResponseStream());
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.DocumentStream = receiveStream.BaseStream;
请帮助我。我在这个问题上停留了太久了。谢谢。
答案 0 :(得分:0)
设置凭据,如下所示
request.Credentials = new NetworkCredential("UserName", "Password");
如果页面接受凭据(基本身份验证)是可能的,根据我的经验,在大多数情况下并非如此。
如果要使用WebRequest,则需要提供标头,cookie,并且需要cookie容器,现在,如何获取cookie就是另一回事了。
使用WebBrowser
控件时。我建议的最简单方法是,先导航到登录页面,填写凭据,然后单击提交按钮。然后导航到所需的页面页面:
private void webbrowser1_DocumentCompleted(object sender, DocumentCompletedEventArgs e)
{
if(webbrowser1.Url.EndsWith("login.aspx") //check if it is the login url
{
var doc = webbrowser1.Document;
doc.GetElementById("email").SetAttribute("value", email);
doc.GetElementById("password").SetAttribute("value", password);
doc.GetElementsByTagName("input").OfType<HtmlElement>()
.FirstOrDefault(x => x.GetAttribute("type") == "submit"))
.InvokeMember("click");
}
else
{
webbrowser1.Navigate(repUrl);
}
}
在上述答案中,我只是假设登录页面为login.aspx
,并且电子邮件和密码字段的ID为email
和password
,当然您必须更改填写方式这些输入具有自己的id
,或者如果它们的名称中没有ID,...