0

Wi-Fi ホットスポットに自動的に再接続する C#/.NET アプリを作成しています。インターネット アクセス検出は正常に機能しますが、再接続できません。Wi-Fi ホットスポットは、HTTPS POST ログイン フォームを使用します。

stackoverflow からいくつかの提案を試みましたが、これまでのところ何も機能しませんでした。リクエストから得た答えはログイン ページであり、インターネットに接続していません。

私は試した:

public class Hotspot
{
    public string Url { get; set; }
    public string Method { get; set; }
    public string Inputs { get; set; }

    public HttpStatusCode Connect()
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.Url);
        request.KeepAlive = false;
        request.ProtocolVersion = HttpVersion.Version10;
        request.Method = this.Method;

        ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; });

        byte[] post_bytes = Encoding.ASCII.GetBytes(this.Inputs);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = post_bytes.Length;
        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(post_bytes, 0, post_bytes.Length);
        }

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd());
        Console.WriteLine(response.StatusCode);
        return response.StatusCode;
    }

    public void Connect2()
    {
        using (WebClient client = new WebClient())
        {
            client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            byte[] response = client.UploadData(this.Url, "POST", encoding.GetBytes(this.Inputs));
            Console.WriteLine(encoding.GetString(response));
        }
    }
}
  • this.Url は @"https://hotspot.somtehing.com/nb4_crypt.php" のようになります
  • this.メソッドは「POST」
  • this.Inputs は、すべての入力とその値を表す文字列です (@"username=me&password=something&conditions=on&blablah=" など)。

どちらの方法でもログイン ページが出力されますが、まだインターネットに接続されていません。最初のメソッド (Connect) は 200 を返します。入力値を確認したところ、正しい値でした。Web ブラウザーを使用して接続できました。

4

0 に答える 0