Hurrengo kodea, https konexio seguruetan zihurtagiriak onartzeko erabiltzen da. jasotzen dugu X509Certificate delako eta hori konparatu beharko genuke, baina, errazteko beti onartzen dugu (noski segurtasuna galduz). Hau erabiltzeko using System.Security.Cryptography.X509Certificates; gehitu behar dugu gure proiektura.
class CertPolicy: ICertificatePolicy { public boolCheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request,int certificateProblem) { // Beti true itzultzen du zihurtagiri guztiak onartuz return true; } }
Hemendik aurrera web zerbitzariari eskaerak egin behar dizkogu, application/x-www-form-urlencoded sistema erabiliz, formularioak eta POST sistema. Honetarako nahi dugun orria aztertu behar dugu eskaera nola egin ikusteko. Honetarako oso erabilgarria da Firefoxen livehttpheaders gehigarria.
UNED unibertsitateko kode nagusia:
public string Consulta_uned (string usr, string pas, string conv) { try { //Izen ematea, zerbitzarira konektatu eta datuak bidaltzen ditugu. HttpWebRequest solicitud = (HttpWebRequest) WebRequest.Create(host); string DatosUsuario ="usuario=" + usr + "&url=&clave=" + pas + "&acceso=Acceso"; solicitud.CookieContainer = new CookieContainer (); ServicePointManager.CertificatePolicy = new CertPolicy(); //Eskariaren formatua byte[] datos = Encoding.Default.GetBytes(DatosUsuario); solicitud.Method = "POST"; solicitud.ContentType = "application/x-www-form-urlencoded"; solicitud.ContentLength = datos.Length; //Datuak idazten ditugu Stream sout = solicitud.GetRequestStream(); sout.Write(datos, 0, datos.Length); sout.Flush(); sout.Close(); HttpWebResponse respuesta = (HttpWebResponse) solicitud.GetResponse(); //Cookieak hartu eta gordetzen ditugu CookieContainer ContenedorCookies = new CookieContainer (); foreach(Cookie c in respuesta.Cookies) ContenedorCookies.Add( newCookie (c.Name, c.Value)); //Izena ematearen fasea bukatuta // Orain conv deialdiaren notak eskatzen ditugu solicitud = (HttpWebRequest) WebRequest.Create(hostnotas); string Convocatoria ="Convocatoria=" + conv + "&Enviar=Consultar+Calificaciones"; solicitud.CookieContainer = ContenedorCookies; datos = Encoding.Default.GetBytes(Convocatoria); solicitud.Method = "POST"; solicitud.ContentType = "application/x-www-form-urlencoded"; solicitud.ContentLength = datos.Length; sout = solicitud.GetRequestStream(); sout.Write(datos, 0, datos.Length); sout.Flush(); sout.Close(); respuesta = (HttpWebResponse) solicitud.GetResponse(); Stream stream = respuesta.GetResponseStream (); StreamReader lector = newStreamReader(stream); string web = lector.ReadToEnd(); lector.Close(); return web; } catch (Exception w) { Console.WriteLine("Error al efectuar la conexion:"); Console.WriteLine(w.ToString()); string web = ""; web = "\t<html>\n\t\t<body>\t<h1>Error en la conexion</h1>\t</body>\n\t</html>"; return web; } }