Комментарий с передачей их в виде строки запроса работает только для параметров GET
. Это работает для POST
. Как видите, я использую записи формы username
, password
и login
(кнопка), но в вашем случае это могут быть совершенно другие значения. Поэтому используйте инструмент типа Fiddler , чтобы узнать, какие значения отправляет обычный логин. Когда я делал что-то подобное, мне приходилось использовать веб-клиента, поддерживающего файлы cookie, потому что сервис использовал файлы cookie для значений сеанса. Служба, к которой вы пытаетесь получить доступ, может использовать строку сеанса запроса - она полностью зависит от службы.
Другая проблема, с которой я столкнулся при этом, заключалась в том, что мне пришлось получить идентификатор сеанса со страницы html и отправить его для регистрации. Я не включил код для этого здесь, но у меня есть, если вам это нужно:)
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;
}
}