Введите имя пользователя и пароль для входа на страницу программного обеспечения - PullRequest
5 голосов
/ 03 мая 2011

Я хочу опубликовать имя пользователя и пароль на странице входа на удаленный сайт, используя asp.net, и передать его, чтобы получить доступ к страницам, требующим входа на сайт.Другими словами, предположим, что на веб-сайте есть страница, на которой я хотел бы заняться серфингом, получить что-то от нее, но перед этим требуется вход в систему.как вызвать эту страницу входа и опубликовать имя пользователя и пароль из приложения asp.net для ее передачи.

Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 03 мая 2011

Комментарий с передачей их в виде строки запроса работает только для параметров 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;
    }
}
3 голосов
/ 21 ноября 2012

попробуйте прочитать это -> http://www.terminally -incoherent.com / blog / 2008/05/05 / отправить-https-post-request-with-c /

если вы используете firefox - скачайте "tamper-data" и "live http-headers", чтобы увидеть, какая информация передается на сайт входа

с live http-headers, вы можете увидеть, какие данные передаются в POST

0 голосов
/ 03 мая 2011

Предположим, вы хотите перенаправить на www.ABC.com

построить строку запроса, например

http://abc.com/products.aspx?field1=value1&field2=value2

, и получить это значение на другой странице.Но рекомендуется использовать метод POST, надеюсь, это поможет

...