私は実際にこのURLのキャプティブポータルを介してネットワークに接続していますhttps://secure.arubanetworks.com/cgi-bin/login、これまでに完全な(C++ & libCurl)に接続するプログラムを作りました。ユーザー名やパスワードなどの「クエリ文字列」が必要ですが、以前は使用していたPOSTの代わりにGETで動作するように見えるSSL、X.509 Certがまだなかったためだと思います。HTTPSのキャプティブポータルにログイン
Firefox上に貼り付けると、クエリ文字列の完全なURLが私にとって完璧でした。ちょっとしたC#プログラムでそれを達成しようとしましたが、証明書について何をすべきかわからないので私はそれをするためには頭が良いはずです。:P)それは私にProtocolErrorを投げます、そして、私は最初にそれについて少し理解するべきだと思ったので、私はそれを達成するコードに興味がありますできます。 :)
PS:アカウントやプログラム(exe)をコールバックとして、接続プロパティ(my OSはWin7)に設定すると、一度ネットワークに接続すれば即座に認証されます。 :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());
}
}
}
私は言ったように、リクエストはGETを通じて行われるので、私は.method = "GET"を持ってはいけませんか?それから他のものはまだ動作し続けますか? – Dane411
GETの場合、x-www-form-encodedは必要ありません。そして、あなたがする必要があるのは、[この投稿](http://stackoverflow.com/questions/943852/how-to-send-an-https-get-request-in-c)のサンプル回答に従ってください。 – zanlok
ありがとう、私はこの両方をしようとする(おそらく13日まで、私は接続するUnivにする必要があります)し、結果を報告する! ;) – Dane411