【问题标题】:Using Visual basic 2017 to navigate to a esp8266 wifi switch (Sonoff)使用 Visual basic 2017 导航到 esp8266 wifi 开关 (Sonoff)
【发布时间】:2018-06-04 22:47:01
【问题描述】:
我正在使用以下代码导航到特定网址,如下所示:
WebBrowser1.Navigate("http://192.168.0.157/cm?cmnd=POWER%20Toggle"
事实上,该链接返回一个 .json 文件,WebBrowser 控件显示默认的保存文件对话框,询问我是要保存文件还是运行它。
我想忽略它的对话框并直接从 .json 文件中读取(我的意思是在下载之后)。
我只是想摆脱网络浏览器的保存对话框。我是新手,所以我不知道要搜索什么或如何正确询问。
【问题讨论】:
标签:
vb.net
webbrowser-control
【解决方案1】:
虽然您的帖子甚至没有接近标准并且几乎没有解释问题,但我目前的理解是您有一些问题,我会单独回答。
禁用网络浏览器的下载对话框并自动下载文件
首先,您提到 it 返回一个 .json 文件。因此,您可以轻松地将SaveFileDialog 添加到您的表单或设置自定义路径(可能在变量中)并检查网络浏览器是否正在尝试下载任何 .json 文件。然后你将Cancel 调用(通常我的意思是取消显示 Save 、Run ...的弹出窗口)并使用SaveFileDialog 或本地变量将文件直接保存到磁盘。这是一个使用本地字符串变量作为路径并将 .json 文件直接保存到磁盘的示例:
Imports System.ComponentModel
...
Dim filepath As String '''class lever variable
Private Sub myBroswer_Navigating(sender as Object, e As WebBrowserNavigatingEventArgs) Handles myBroswer.Navigating
If e.Url.Segments(e.Url.Segments.Length - 1).EndsWith(".json") Then
e.Cancel = True
filepath = "C:\test\" + e.Url.Segments(e.Url.Segments.Length - 1)
Dim client As WebClient = New WebClient()
AddHandler client.DownloadFileCompleted , AddressOf New AsyncCompletedEventHandler(DisplayJson);
client.DownloadFileAsync(e.Url, filepath)
End If
End Sub
显示结果 AKA .json
反序列化/解析.json文件非常容易。但首先,下载this,解压ZIP和Add Reference到Newtonsoft.Json.dll。现在考虑下面的代码 sn-p :
Private Sub DisplayJson()
Dim parseJson = Newtonsoft.Json.Linq.JObject.Parse(File.ReadAllLines(filepath))
MsgBox(parseJson("element name here").ToString)
End sub
希望对你有帮助