|
You last visited: Today at 11:28
Advertisement
HttpWebRequest Login
Discussion on HttpWebRequest Login within the .NET Languages forum part of the Coders Den category.
10/14/2012, 22:56
|
#16
|
elite*gold: 24
Join Date: Apr 2010
Posts: 35,826
Received Thanks: 6,344
|
Quote:
Originally Posted by Kraizy
Sicher, dass du deinen Code nicht einfach irgendwo rauskopiert hast..?
Naja, Debug.Print(quelltext), oder du setzt nen Haltepunkt und kopierst den Wert deiner Variable selber raus.
|
Jop, habe vorher nur nie mit Visual Studio gearbeitet, da ich aus Java komme und die Syntax ziemlich ähnlich ist, konnte ich da recht schnell einsteigen.
Das ein oder andere muss ich zwar auf MSDN nachschlagen, aber sonst keine Probleme. Meine Frage war lediglich, ob der Quelltext vom Debugger selbst kommt. Wie ich ihn auslesen kann, ist mir schon bewusst, dennoch danke
|
|
|
10/15/2012, 12:13
|
#17
|
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
|
Code:
public class Http
{
public string PostRequest(string host, string path, string spostPacket)
{
var cookies = Cookies.GetInstance();
var cookieContainer = new CookieContainer();
byte[] postPacket = Encoding.UTF8.GetBytes(spostPacket);
var request = (HttpWebRequest) HttpWebRequest.Create("http://" + host + path);
request.CookieContainer = cookieContainer;
request.Method = "POST";
request.Host = host;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1";
request.ConnectionGroupName = "keep-alive";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postPacket.Length;
request.Proxy = new WebProxy();
foreach (var cookie in cookies.GetCookies())
{
request.CookieContainer.Add(cookie);
}
var dataStream = request.GetRequestStream();
dataStream.Write(postPacket, 0, postPacket.Length);
var response = (HttpWebResponse)request.GetResponse();
var responseType = response.ContentType;
dataStream = response.GetResponseStream();
var responseStream = new StreamReader(dataStream);
var html = responseStream.ReadToEnd();
if(response.Cookies.Count != 0)
{
List<Cookie> retCookie = new List<Cookie>();
for (int i = 0; i < response.Cookies.Count; i++)
{
retCookie.Add(response.Cookies[i]);
}
cookies.SetCookies(retCookie);
}
dataStream.Close();
return html;
}
public string GetRequest(string host, string path = "")
{
var cookies = Cookies.GetInstance();
var cookieContainer = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create("http://" + host + path);
request.CookieContainer = cookieContainer;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
request.ConnectionGroupName = "keep-alive";
request.Host = host;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1";
request.Proxy = new WebProxy();
foreach (var cookie in cookies.GetCookies())
{
request.CookieContainer.Add(cookie);
}
var response = (HttpWebResponse)request.GetResponse();
var dataStream = response.GetResponseStream();
var responseStream = new StreamReader(dataStream);
var html = responseStream.ReadToEnd();
if (response.Cookies.Count != 0)
{
List<Cookie> retCookie = new List<Cookie>();
for (int i = 0; i < response.Cookies.Count; i++)
{
retCookie.Add(response.Cookies[i]);
}
cookies.SetCookies(retCookie);
}
dataStream.Close();
return html;
}
}
Code:
public class Cookies
{
private List<Cookie> _cookies = new List<Cookie>();
private static Cookies _cookiesInstance;
public static Cookies GetInstance()
{
if (_cookiesInstance != null)
return _cookiesInstance;
_cookiesInstance = new Cookies();
return _cookiesInstance;
}
private Cookies(){}
public List<Cookie> GetCookies()
{
return _cookies;
}
public void SetCookies(List<Cookie> cookies )
{
_cookies = cookies;
}
}
public class CookieEntity
{
public Cookie cookie { get; set; }
}
Das sind zwei alte Methoden von mir, zwar nicht perfekt nach den Normen gecoded, aber da kannst du über die Cookies immer checken, ob dein Login erfolgreich war. Außerdem werden die Cookies immer automatische gespeichert und wieder neu mitgegeben.
Ein Login bei epvp würde dann so aussehen:
Code:
var httpRequest = new Http();
var html = string.Empty;
html = httpRequest.GetRequest(@"www.elitepvpers.com");
html = httpRequest.PostRequest(@"www.elitepvpers.com", "/forum/login.php?do=login", @"vb_login_username=" + usrName + @"&vb_login_password=&cookieuser=1&s=&securitytoken=" + "guest" + "&do=login&vb_login_md5password="+ GetMd5Hash(password).ToLower() +"&vb_login_md5password_utf=" + GetMd5Hash(password).ToLower());
Zum Login prüfen:
Code:
Cookies.GetInstance().GetCookies().Contains("COOKIEDASEXISTIERENMUSSWENNDUEINGELOOGTBIST")
|
|
|
10/16/2012, 09:25
|
#18
|
elite*gold: 12
Join Date: Aug 2011
Posts: 455
Received Thanks: 418
|
You need to save cookies to use in other pages.
|
|
|
10/16/2012, 12:20
|
#19
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
I guess the problem is already solved..
|
|
|
10/17/2012, 20:41
|
#20
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Falls, es noch benötigt wird, der Konstruktor meiner Klasse:
Code:
public Elitepvpers(string username, string password)
{
Request request = new Request();
string serverResponse = null;
username = HttpUtility.UrlEncode(username);
request.Send("http://elitepvpers.com/forum", ref cookies);
serverResponse = request.Send("http://www.elitepvpers.com/forum/login.php?do=login", "vb_login_username=" + username + "&vb_login_password=" + password + "&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf=", ref cookies);
if (!serverResponse.Contains("Thank you for logging in")) loggedIn = false;
else loggedIn = true;
}
|
|
|
10/18/2012, 13:28
|
#21
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
@Headpuster funktionieren bei dir Logins, welche mit Usernamen durchgeführt werden, die zb ein ♥ im Namen enthalten? Bei mir nicht, und ich bin zu blöd das richtige CharSet zu finden
|
|
|
10/18/2012, 14:09
|
#22
|
elite*gold: 0
Join Date: Apr 2010
Posts: 10,289
Received Thanks: 3,613
|
Schon mit dem Charset von Elitepvpers versucht (charset=ISO-8859-1)?
|
|
|
10/18/2012, 14:43
|
#23
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Code:
username = HttpUtility.UrlEncode(username);
& charset=ISO-8859-1
That's the Trick.
|
|
|
10/18/2012, 15:48
|
#24
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Hm komisch..hab ich gestern schon probiert, aber angeblich Invalid username/password..naja jz gehts
|
|
|
 |
|
Similar Threads
|
c# httpwebrequest Travian
12/07/2017 - .NET Languages - 2 Replies
Gude Leute ich hätt da mal ein anliegen ich will mir ein kleines Tool zur vereinfachten bedinung von Travian schreiben nur leider bekomme ich das irgendwie nicht auf die Reihe.
da mein Code nicht so recht funktioniert hat habe ich mir den code von jemand anderes mal geklaut aber der ergibt das gleiche problem.
Das Probleme ist er zeigt die Seite nicht richtig an und er baut keine truppen wenn ich auf Button1 click.
wenn mir einer das vielleicht mal flicken könnte oder mir erklären...
|
Datei kopieren nach login mit httpwebrequest funktioniert nicht - vb.net 2010
06/08/2012 - .NET Languages - 0 Replies
bitte löschen
|
[VB] HttpWebRequest Problem -.-
02/02/2012 - .NET Languages - 1 Replies
Hallo liebe Elitepvpers User,
ich habe leider folgendes Problem:
Ich möchte von dem Spam Email Anbieter "yopmail.com" meine Emails auslesen.
Dazu muss ich mich auf der Webseite einfach mit "test" Anmelden
Hierzu der HTTP Header : Siehe Anhang
accname = Account Name im Beispiel "test"
|
[C#]MD5-Cheksumme mit HttpWebRequest oä
08/18/2010 - .NET Languages - 1 Replies
Ich will mir mal einen gescheiten Patcher für Metin2 machen..
Jetzt soll er von den Files auf meinem Server die Checksummen ausspucken.
Die Datei sollte nicht heruntergeladen werden...
System.IO.FileStream FileCheck = System.IO.File.OpenRead(Dateipfad);
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvi der();
byte md5Hash = md5.ComputeHash(FileCheck);
|
All times are GMT +1. The time now is 11:28.
|
|