【问题标题】: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 调用(通常我的意思是取消显示 SaveRun ...的弹出窗口)并使用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 ReferenceNewtonsoft.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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    相关资源
    最近更新 更多