Войти на другой сайт и проанализировать данные - PullRequest
1 голос
/ 28 ноября 2011

Есть страница php, назовем ее http://www.aaaa.org/login.php, в которой есть две textboxes (name = "username" и name = "password") и кнопка.И есть моя страница .aspx, с которой я хочу войти на эту страницу .php.После входа в систему я хочу получить и проанализировать некоторый контент подстраницы http://www.aaaa.org/details.php?id=1234.Я попробовал некоторый код, но он всегда извлекает содержимое страницы login.php, поэтому я предполагаю, что вообще не могу войти.Можете ли вы показать мне точный код, как это сделать?Язык C #.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011
    protected void Page_Load(object sender, EventArgs e)
    {
        WebClient req = new WebClient();

        CredentialCache myCache = new CredentialCache();
        //myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Basic", new NetworkCredential("login", "passw"));
        myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Digest", new NetworkCredential("login", "passw"));

        req.Credentials = myCache;

        string results;
        results = System.Text.Encoding.UTF8.GetString(req.DownloadData("http://www.aaaa.org/login.php"));
    }

        protected void Button1_Click(object sender, EventArgs e)
    {
        string TheUrl = "http://www.aaaa.org/details.php?id=2923";
        string response = GetHtmlPage(TheUrl);
        TextBox2.Text = response;
    }

---------------- обновлено: -----------------

    protected void Page_Load(object sender, EventArgs e)
    {
        WebClient req = new WebClient();

        CredentialCache myCache = new CredentialCache();
        myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Basic", new NetworkCredential("login", "passw"));

        NameValueCollection postData = new NameValueCollection();
        postData.Add("username", "login");
        postData.Add("password", "passw");
        req.UploadValues("http://www.aaaa.org/login.php", postData);

        req.Credentials = myCache;

        string results;
        results = System.Text.Encoding.UTF8.GetString(req.DownloadData("http://www.aaaa.org/login.php"));
0 голосов
/ 28 ноября 2011

Для этого вы можете использовать библиотеку HTTPClient. Что-то вроде этого: http://www.codescales.com/

Это позволит вам войти в систему и получить доступ к клиентскому приложению. Обратите внимание, что ваше приложение будет хрупким и подвергнется веб-приложению, и оно изменится. Поэтому, если они изменяют имена полей, ваше приложение также должно будет измениться. Но это сработает для того, чего вы пытаетесь достичь.

Я бы также предложил написать это как отдельную библиотеку, а не непосредственно в вашем коде ASPX.

...