C# httpwebRequest Boundary

Programovacie jazyky, rady, poradňa...
matus12345
Novice
Novice
Príspevky: 6
Registrovaný: 12 mar 2011, 23:03

C# httpwebRequest Boundary

Príspevok od používateľa matus12345 »

Dobrý deň.
Chcem urobiť jednoduché prihlásenie do systémov s airOS. Autentifikácia prebieha s Multipart Media Encapsulation... (napríklad táto: http://87.249.150.202/login.cgi)
Zatiaľ som si napísal kód:

Kód: Vybrať všetko

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(strUrl);
			
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1";
			
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=---------------------------256672629917035";
string strPostData = "\r\n-----------------------------256672629917035\r\n" +
"Content-Disposition: form-data; name=\"uri\"\r\n" +
"\r\n" +
"\r\n" +
"-----------------------------256672629917035\r\n" +
"Content-Disposition: form-data; name=\"username\"\r\n" +
"\r\n" +
"meno\r\n" +
"-----------------------------256672629917035\r\n" +
"Content-Disposition: form-data; name=\"password\"\r\n" +
"\r\n" +
"heslo\r\n" +
"-----------------------------256672629917035\r\n" +
"Content-Disposition: form-data; name=\"Submit\"\r\n" +
"\r\n" +
"Login\r\n" +
"-----------------------------256672629917035--\r\n";
				
byte[] byty = System.Text.Encoding.UTF8.GetBytes(strPostData);
req.ContentLength = byty.Length;
				
Stream stream = req.GetRequestStream();
stream.Write(byty, 0, byty.Length);
stream.Flush();
stream.Close();

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
		
StreamReader sr = new StreamReader(resp.GetResponseStream());

Ak si otvorím wireshark a pozriem sa na stream, videl som ze odoslalo dáta iba po hlavičky a inak neposlalo žiadnu časť PostDat.
Neviete mi poradiť čo robím zle prípadne spôsob ako sa autentifikovať pomocou boundary?
Ďakujem.
grrJava
Amateur
Amateur
Príspevky: 33
Registrovaný: 12 feb 2012, 16:35

Re: C# httpwebRequest Boundary

Príspevok od používateľa grrJava »

Riadok 1.: HttpWebRequest myslim neexistuje. Aj keby hej, preco to potom pretypovavas do toho isteho typu? Nema to byt nahodou WebRequest.Create?
O nieco nizsie by si mohol vyskusat streamwriter. namiesto Stream.Write. BTW ako sa na to pozeram, asi by som ti odporucal zobrat si Winforms a WebBrowser, skryť ho a pracovať s triedou HtmlDocument.
matus12345
Novice
Novice
Príspevky: 6
Registrovaný: 12 mar 2011, 23:03

Re: C# httpwebRequest Boundary

Príspevok od používateľa matus12345 »

Dik za odpoveď. Nakoniec som prišiel na to prečo to robilo stačilo pridať riadok

Kód: Vybrať všetko

System.Net.ServicePointManager.Expect100Continue = false;
aby nepridávalo do každej hlavičky web requestu pridávalo riadok Expect100Continue a teda sa prenos ukončil skôr ako mal. Akto niekoho zaujíma mam aj link čo som našiel.
http://haacked.com/archive/2004/05/15/h ... tinue.aspx
Napísať odpoveď