概述

这是一个天气预报查询实例,通过调用天气预报查询接口,获取天气预报信息,并播放央视解说视频。

源代码可以从这里下载:VBMAN

项目结构

::: tip 下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]
代码请到首页下载VBMAN 项目,解压后,打开包含所有DEMO项目。
:::

Weather/
  ├── Form1.frm       # 主窗体,包含服务器启动代码
  └── Weather.vbp     # VB6项目文件

核心代码解析

1. 主窗体(Form1.frm)

Private Sub Command1_Click()
    '城市id,
    Dim id$: id = Text4.Text
    '通过城市名称查询城市id的接口
    Const areaid$ = "https://i.tq121.com.cn/j/wap2016/news/city_search_data.js?20220422"
    '全国天气预报视频和区域
    Const videos$ = "https://e.weather.com.cn/pubm/videos_vms1.htm?callback=getLbDatas&_=1747888658520"
    Dim area$: area = "https://e.weather.com.cn/p/site/aqifc1h?areaid=" & id & "&callback=aqifc1h&_=1747888658537"
    '城市当前天气预报
    Dim tq$: tq = "https://d1.weather.com.cn/sk_2d/" & id & ".html?_=1747889185006"
    '城市一周天气
    Dim week$: week = "https://d1.weather.com.cn/weixinfc/" & id & ".html?_=1747889185007"
    '城市天气概览
    Dim sum$: sum = "https://d1.weather.com.cn/weather_index/" & id & ".html?_=1747889185008"

    '一句话调用
    'Text1.Text = VBMAN.HttpClient.Fetch(ReqGet, videos).ReturnJson().Encode(, 2, True)
    '分段调用
    With VBMAN.HttpClient.Fetch(ReqGet, videos).ReturnJson()
        Text1.Text = .Encode(, 2, True)                                         '显示文本内容
        Dim url$: url = .Root("documents")(1)("videourl")(1)("url")
        WindowsMediaPlayer1.url = url                                           '播放天气预报视频
    End With
    '城市天气预报均需要添加“引用”头 ^"referer: https://e.weather.com.cn/^" ^
    With VBMAN.HttpClient
        .RequestHeaders("referer") = "https://e.weather.com.cn/"
        '获取当前城市的天气数据
        With .Fetch(ReqGet, tq).ReturnJson()
            Label1.Caption = .Root("cityname") & " 当前气温:" & .Root("temp") & " 度"
            Text2.Text = .Encode(, 2, True)
        End With
        '获取城市对于的id数据
        Text3.Text = .Fetch(ReqGet, areaid).ReturnText()
    End With


End Sub

功能说明

  1. 接口列表
  • 通过城市名称查询城市id的接口
  • 获取城市id数据
  • 获取天气预报视频和区域
  • 获取城市当前天气预报
  • 获取城市一周天气
  • 获取城市天气概览
  1. 效果截图

技术要点

  1. VBMAN 库提供了 HttpClient 类,用于处理 HTTP 请求。
  2. 通过 HttpClient 类的 Fetch 方法可以发送 HTTP 请求,并返回响应结果。
  3. 可以使用 Fetch 方法的 ReturnJson 方法将响应结果转换为 JSON 对象,并进行后续处理。
  4. 可以使用 Fetch 方法的 ReturnText 方法将响应结果转换为文本,并进行后续处理。
  5. 可以使用 HttpClient 类的 RequestHeaders 属性添加请求头,如添加 Referer 头。
  6. 可以使用 Json 类的 Root 方法获取 JSON 对象的根节点,并使用 Root 方法获取指定节点的值。
  7. 可以使用 Json 类的 Encode 方法将 JSON 对象转换为文本,并设置缩进和换行符。
  8. 可以使用 WindowsMediaPlayer 控件播放视频。

扩展建议

  1. 可以添加更多的城市查询功能,如添加城市列表,用户输入城市名称后查询城市id,并显示天气预报。
  2. 可以添加更多的天气预报功能,如添加天气预报列表,用户选择城市后查询天气预报。
  3. 可以添加更多的天气预报查询功能,如添加天气预报查询列表,用户选择城市后查询天气预报。
Hi, I’m 邓伟(woeoio)

本来无一物,何处惹尘埃

发表回复