我正在尝试维护一个 Visual Basic 6 软件,该软件旨在帮助加快我工作部门的一些文本格式。我不是一个计算机工程师/科学家,但这个软件属于我的管辖范围,因为它是由我受雇取代的绅士编写的。
该工具旨在在短时间内格式化大量数据,以消除手动格式化。
似乎传递给程序用户指定的 URL 的 WinHttpRequest 大部分都在工作。然而,当调用 ResponseBody 属性时,编写的软件所期望的信息并没有被抓取。我不确定数据之前是如何托管在 URL 页面上的,但是当通过 Web 浏览器检查相关 URL 的页面源时,预期检索的数据是可见的,但似乎是热链接的从不同的 URL/位置进入。但是,当创建 WinHttpReq.ResponseBody 并将其转储到本地文件中时,会传递预期和需要的信息。
看起来它正在传递数据,因为数据是通过原始 URL 上的单独热链接引用的。我的问题是,检索在检查页面源时可见但在 ResponseBody 函数调用中未检索到的数据的最简单方法是什么。ResponseBody 调用似乎也将热链接 URL 丢弃到初始 HTTP 请求 URL 中,但我认为用于构建热链接的信息和 ID 存储在数据中。
' Create an array to hold the response data.
Dim d() As Byte
' Assemble an HTTP request.
WinHttpReq.Open "GET", ap_feedreq, False
' Set the user name and password.
WinHttpReq.SetCredentials ap_user, ap_pass, _
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
' Send the HTTP Request.
WinHttpReq.Send
' Display the response headers.
' MsgBox WinHttpReq.GetAllResponseHeaders & " " & WinHttpReq.ResponseText
If WinHttpReq.status = 200 Then
webwire1.StatusBar1.Panels(1).Text = "Authentication Complete .....
Parsing XML File"
webwire1.StatusBar1.Refresh
docpath1$ = mydocpath + "aptemp.txt"
Open docpath1$ For Binary As #1
d() = WinHttpReq.ResponseBody
Put #1, 1, d()
Close #1
这是一张图片,说明了我所看到的内容,希望能更好地展示我所指的内容。
软件中编写的解析功能会查找“nitf version =”标志,以了解何时找到要用于格式化的统计数据/表格。
我的问题是,是否有一种更简单、更优雅的解决方案可以一次将所有网页源数据拉下,在网络浏览器中可见?还是我必须提取响应正文,解析正文文本,使用变量构建 URL,传递更多单独的页面 URL 请求,存储该文本,解析该数据,然后将解析后的数据加载回原始正文数据?
我想尽可能少地改变书面软件。