Frage

Wie kann ich auf die Seite http://www.bhmobile.ba/portal/index von HttpWebRequest verwenden?

Login-Taste ist "Pošalji" (linke obere Ecke).

HTML-Quelle der Login-Seite:

<table id="maintable" border="0" cellspacing="0" cellpadding="0" style="height:100%; width:100%">
  <tr>
    <td width="367" style="vertical-align:top;padding:3px"><script type="text/javascript">
function checkUserid(){
    if (document && document.getElementById){
        var f = document.getElementById('userid');
        if (f){
            if (f.value.length < 8){
                alert('Korisničko ime treba biti u formatu 061/062 xxxxxx !');
                return false;
            }
        }
    }
    return true;
}
</script>
<div style="margin-bottom:12px"><table class="leftbox" style="height:184px; background-image:url(/web/2007/slike/okvir.jpg);" cellspacing="0" cellpadding="0">
    <tr>
        <th style="vertical-align:middle"><form action="http://sso.bhmobile.ba/sso/login" method="post" onSubmit="return checkUserid();">

            <input type="hidden" name="realm" value="sso">
            <input type="hidden" name="application" value="portal">
            <input type="hidden" name="url" value="http://www.bhmobile.ba/portal/redirect?type=ssologin&amp;url=/portal/show?idc=1111">
            <table class="formbox" align="center" cellspacing="0" cellpadding="0">
                <tr>
                    <th style="vertical-align:middle; text-align:right;padding-right:4px;">Korisnik:</th>
                    <td><input type="text" size="20" id="userid" name="userid"/></td>
                </tr>

                <tr>
                    <th style="text-align:right;padding-right:4px;">Lozinka:</th>
                    <td><input type="password" size="20" name="password" /></td>
                </tr>
                <tr>
                    <th colspan="2">
                         <input class="dugmic" type="image" id="prijava1" alt="Prijava" src="/web/2007/dugmici/posalji_1.jpg" onmouseover="ChangeImage('prijava1','/web/2007/dugmici/posalji_2.jpg')" onmouseout="ChangeImage('prijava1','/web/2007/dugmici/posalji_1.jpg')">
                    </th>

                </tr>
            </table>
            <div style="padding:12px;">
                <a href="/portal/show?idc=1121">Da li ste novi BH Mobile korisnik?</a><br />
                <a href="/portal/show?idc=1121">Da li ste zaboravili lozinku(šifru)?</a><br />
            </div>
        </form></th>
    </tr>

</table></div>

Formularaktion ist http://sso.bhmobile.ba/sso/login . Wie kann ich dies mit HttpWebRequest ein Cookie zu bekommen und einige stammen aus dieser Seite?

War es hilfreich?

Lösung

Machen Sie

ein neues default.aspx, und setzen diese in der Code-behind. Ich kann nicht testen, weiter auf der Grundlage Ihrer aktuellen Frage, weil Sie keinen gültigen Benutzernamen / Passwort enthalten waren

    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();

        }
    }
}

Andere Tipps

Sie können den Bau in der WebClient-Objekt verwenden, anstatt den Antrag selbst erstellen.

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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top