我实际上通过这个url https://secure.arubanetworks.com/cgi-bin/login的强制网络连接我的univ到网络,不久前我创建了一个连接到它的程序,它完美无缺(C ++和libCurl),发送HTTP POST与所需的“查询字符串”,如用户名和密码,但我认为这是因为还没有SSL,X.509证书,现在似乎可以使用GET而不是之前使用的POST。
在Firefox上粘贴带有查询字符串的完整网址对我来说是完美的,因为它应该如此,所以我只是尝试在一个小C#程序中实现这一点,但因为我不知道如何处理该证书(我asume必须有smth来处理它...:P)它抛出一个ProtocolError,现在我认为我应该首先了解它,所以我对代码实现它感兴趣,但它的方式也是如此作品。 :)
PS:如果有一种方法可以将连接属性(我的操作系统是Win7)设置为帐户或程序(exe)作为回调,那么一旦连接到网络即可进行中等身份验证。 :d
提前感谢您的时间和帮助伙伴! ;)
Uri uri = new Uri(url + "?" + postData);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
req.Method = this.method;
// ToDo: Something doesn't work with the cert auth I guess
req.Proxy = null;
req.Credentials = CredentialCache.DefaultCredentials;
ServicePointManager.ServerCertificateValidationCallback +=
delegate(object sender, X509Certificate certificate, X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
return true;
};
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream responseStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string responseFromServer = reader.ReadToEnd();
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError)
{
HttpWebResponse response = e.Response as HttpWebResponse;
if (response != null)
{
Console.WriteLine(e.ToString());
}
}
}