Войдите в страницу с HttpWebRequest

После разговора об этом мы обнаружили две проблемы.

Первой проблемой был пропущенный reloadData вызов, упомянутый выше. Это заставляло cellForRow не называться. Добавление reloadData исправило эту проблему, но тогда выходы пользовательского класса ячеек были равны нулю, что привело к сбою в setItemData.

Вторая проблема заключалась в том, что в коде вызывался register(_:forCellReuseIdentifier:), но пользовательская ячейка уже была настроена как часть объявления Interface Builder UITableView. Повторный вызов register для пользовательского класса перерегистрирует reuseIdentifier, отключая розетки, установленные в раскадровке.

Удаление вызова register и добавление reloadData решили все проблемы.

13
задан GEOCHET 6 March 2009 в 06:03
поделиться

2 ответа

Сделайте новый default.aspx и поместите это в код позади: Я не могу протестировать дальше на основе Вашего текущего вопроса, потому что Вы не включали допустимое имя пользователя/пароль.

    using System; 
    using System.Web;
    using System.Net; 
    using System.IO;
    using System.Web.UI;
    using System.Web.UI.WebControls; 

namespace Foo
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://sso.bhmobile.ba/sso/login"); 
            req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)"; 
            req.Method = "POST";
            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            req.Headers.Add("Accept-Language: en-us,en;q=0.5");
            req.Headers.Add("Accept-Encoding: gzip,deflate");
            req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            req.KeepAlive = true;
            req.Headers.Add("Keep-Alive: 300");
            req.Referer ="http://sso.bhmobile.ba/sso/login";

            req.ContentType = "application/x-www-form-urlencoded"; 

            String Username = "username";
            String PassWord = "Password";

            StreamWriter sw = new StreamWriter(req.GetRequestStream());
            sw.Write("application=portal&url=http%3A%2F%2Fwww.bhmobile.ba%2Fportal%2Fredirect%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Ftype%3Dssologin%26url%3D%2Fportal%2Fshow%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Fidc%3D1023278&realm=sso&userid=" + Username + "&password=" + password + "&x=16&y=11");
            sw.Close();

            HttpWebResponse response = (HttpWebResponse)req.GetResponse();


            StreamReader reader = new StreamReader(response.GetResponseStream());
            string tmp = reader.ReadToEnd();

            foreach (Cookie cook in response.Cookies)
            {
                tmp += "\n" + cook.Name + ": " + cook.Value;
            }


            Response.Write(tmp);
            Response.End();

        }
    }
}
26
ответ дан 1 December 2019 в 20:44
поделиться

Можно использовать сборку в Объекте WebClient вместо того, чтобы упаковать запрос в ящики сами.

WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password");
string url = "http://foo.com";          
try
{
    using (Stream stream = wc.OpenRead(new Uri(url)))
    {
        using (StreamReader reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
             }
    }
}
catch (WebException e)
{
    //Error handeling
}
3
ответ дан 1 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: