2014-12-08 3 views
1

Я работаю над проектом, где мне нужно зайти на сайт интрасети и получить некоторые данные. Есть несколько примеров вокруг о том, как войти на сайт с помощью программы, однако я не могу использовать эти примеры, как веб-сайт всплывает диалоговое окно входа в систему (Windows Security) следующим образом:C# Войти на сайт

enter image description here

Я попробовал Selenium IDE в Firefox и попытался экспортировать тестовый пример в C#, он не регистрирует действие входа для сайта.

Может ли кто-нибудь помочь мне с этим?

Решение:

Ниже приводится код, который я прибыл в после получения помощи.

String siteUrl = "http://XXXXXXXXXXXXXXX"; 
String downLoadPageUrl = "http://XXXXXXXXXXXXXXX/Search.aspx"; 
String mainPageUrl = @"http://XXXXXXXXXXXXXXX/Main.aspx"; 
String UserName = "aUserName"; 
String Password = "aPassword"; 
String Domain = "aDomain"; 

NetworkCredential myCred = new NetworkCredential(UserName, Password, Domain); 

CredentialCache myCache = new CredentialCache(); 

myCache.Add(new Uri(siteUrl), "NTLM", myCred); 

NameValueCollection parameters = new NameValueCollection(); 
parameters.Add("ExcelExport","true"); 

WebClient wc = new WebClient(); 
wc.Credentials = myCache; 
Stream sr = wc.OpenRead(siteUrl); 
wc.OpenRead(mainPageUrl); 
byte[] response = wc.UploadValues(downLoadPageUrl, parameters); 
WebHeaderCollection whc = wc.ResponseHeaders; 

String excelName = whc["Content-Disposition"]; 
outputFile = excelName.Split('=')[1]; 
outputFile = String.Format("{0}\\{1}", Path.GetTempPath(), outputFile); 

File.WriteAllBytes(outputFile,response); 

ответ

0

Вы можете использовать PowerShell WebClient и текущий сеанс

$webclient = new-object System.Net.WebClient 
$credCache = new-object System.Net.CredentialCache 
$creds = new-object System.Net.NetworkCredential("username","password") 
$credCache.Add("url", "Basic", $creds) 
$webclient.Credentials = $credCache 

и просто call the script внутри кода C#.

Другой способ заключается в использовании autoit, поскольку она поддерживает:

Манипулирование окна и процессы

Взаимодействовать со всеми стандартными окнами управления

+0

Я обновил код C# непосредственно и это сработало! – Abbas

+0

Я разместил решение под своим вопросом. – Abbas

Смежные вопросы