Iot 核心 API /api/wifi/network - 错误?

Iot Core API /api/wifi/network - Bug?

Falafel 的 Device Portal Core API contains a Post method for connecting/disconnecting Wifi. This project 就是一个例子。 该项目中的所有其他方法都可以正常工作,但在尝试连接时,返回的响应是 StatusCode 500 "Internal server error"。我在 Raspberry Pi3 上 运行 Windows Iot Core v.10.0.16299.309。

门户身份验证已构建并在请求中传递,wifi 密钥以 base 64 编码。请求 uri 将如下所示。 http://192.168.137.1:8080/api/wifi/network?interface=1A6E4125-B554-40CB-916E-EE55CEBAD6C8&op=connect&ssid=MyWifiSSID&key=42dhi2nuk%182v&createprofile=yes

有没有人发现这种方法有问题,或者错误是否可以重现?感谢您的帮助。

您还需要将 WiFi SSID 编码为 base64 格式。在 C# 中,您可以这样做:

        byte[] stringToBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(wifiSsid);
        string encodedValue = System.Convert.ToBase64String(stringToBytes);

对于您引用的 project,您需要在 Post 方法中使用 EncodeTo64(this.SelectedWifi.SSID) 而不是 this.SelectedWifi.SSID 来连接 Wifi,如下所示:

                using (HttpResponseMessage response = await client.PostAsync(string.Format("http://[IP ADDRESS]:8080/api/wifi/network?interface={1}&ssid={2}&op=connect&createprofile=yes&key={3}", this.DeviceName, this.InterfaceGUID, EncodeTo64(this.SelectedWifi.SSID), EncodeTo64(this.WifiKey)), null))